Pagini recente » Monitorul de evaluare | Diferente pentru problema/prieteni2 intre reviziile 8 si 7 | Diferente pentru utilizator/iloveloona intre reviziile 4 si 3 | Diferente pentru problema/euclid3 intre reviziile 3 si 17 | Cod sursa (job #2653037)
#include <fstream>
#include <iostream>
using namespace std;
const int MOD = 1999999973;
int lgput(int N, int P, int M) {
if (P == 0) return 1;
else if (P == 1) return N % M;
else if (P % 2 == 0) return lgput((N*N)%M, P/2, M);
else if (P % 2 == 1) return (N * lgput((N*N)%M, P/2, M)) % M;
else throw 0;
}
int main(int argc, char const *argv[])
{
ifstream fin("lgput.in");
ofstream fout("lgput.out");
int N, P;
fin >> N >> P;
fout << lgput(N, P, MOD);
return 0;
}