# PBinfo #3849 – Exponentiere – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dă a, b și c, să se calculeze \({a}^{{b}^{c}}\) modulo \({10}^{9}+7\).

Date de intrare
Programul citește de la tastatură numerele a, b, c.

Date de ieșire
Programul va afișa pe ecran numărul X, rezultatul calculului \({a}^{{b}^{c}}\) modulo \({10}^{9}+7\).

Restricții și precizări

1 ≤ a, b, c ≤ 1.000.000.000.

Exemplu:
Intrare

3 4 2
Ieșire

43046721
Explicație
\(4^2 = 16\). \(3^{16}=43046721\).

## Cod sursă C++

```cpp
#include<bits/stdc++.h>
using namespace std;
ifstream fin("window.in");
ofstream fout("window.out");
const long long mod=1e9+7;
long long power(long long a,long long b,long long m){
    if(!b)return 1ll;
    long long p(power(a,b/2ll,m));
    if(b&1ll)return (((a*p)%m)*p)%m;
    return (p*p)%m;
}
int main(){
    long long a,b,c;
    cin>>a>>b>>c;
    cout<<power(a,power(b,c,mod-1),mod);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3849)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3849/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3849/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
