# PBinfo #2398 – Moka – Rezolvare C++

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

## Enunț

Enunț
Moca dorește să posteze pe Pbinfo a probleme de dificultate b. Durata postării celor a probleme de dificultate b este  restul împărțirii lui \(a ^ b\) la 1999999973.

Cerinta
Ajutați-l pe Moca să calculeze durata postării celor a probleme de dificultate b .

Date de intrare
Fișierul de intrare moka.in conține pe prima linie numerele a b, cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire moka.out va conține pe prima linie numărul S, reprezentând  restul împărțirii lui \(a ^ b\) 
la 1999999973.

Restricții și precizări

2 ≤ a,b ≤ 4294967296

Exemplu:
moka.in

2 4
moka.out

16

## Cod sursă C++

```cpp
#include <fstream>
#define mod 1999999973
using namespace std;
ifstream fin("moka.in");
ofstream fout("moka.out");
int main()
{
    long long a, b;
    fin >> a >> b;
    long long p = a;
    long long ans = 1;
    long long exp = 1;
    while(exp <= b){
        if(exp & b){
            ans *= p;
            ans %= mod;
        }
        p = (p % mod * p % mod) % mod;
        p %= mod;
        exp *= 2;
    }
    fout << ans << '\n';
    return 0;
}
```

## Resurse

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