Cod sursa(job #1293178)
Utilizator | Data | 15 decembrie 2014 15:33:37 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.44 kb |
#include <stdio.h>
const int m = 1999999973;
int f(int n, int 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()
{
int N, P;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%i%i", &N, &P);
printf("%i", f(N, P));
return 0;
}