Cod sursa(job #1609812)
Utilizator | David Gergely gerd13 | Data | 23 februarie 2016 00:53:38 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include <fstream>
using namespace std;
const int MOD = 1999999973 ;
unsigned long long N, P ;
ifstream fin("lgput.in") ;
ofstream fout("lgput.out") ;
long long EXP(long long N, long long P)
{
if(P == 0)
return 1 ;
if(P % 2 == 0) return (EXP(((N % MOD) * (N % MOD))%MOD, P / 2)) % MOD ;
else return (N * EXP(((N % MOD) * (N % MOD))%MOD, (P - 1) / 2))% MOD ;
}
int main()
{
fin >> N >> P ;
fout << EXP(N, P) << '\n' ;
return 0;
}