Cod sursa(job #1293180)
| Utilizator | Data | 15 decembrie 2014 15:36:36 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include <stdio.h>
const long long m = 1999999973;
long long f(long long n, long long exp)
{
if (exp == 0)
return 1;
if (exp == 1)
return n;
if (exp%2 == 0)
return f((n*n)%m, exp/2)%m;
return n*f((n*n)%m, (exp-1)/2)%m;
}
int main()
{
long long N, P;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%lli%lli", &N, &P);
printf("%lli", f(N, P));
return 0;
}
