Cod sursa(job #1452359)
| Utilizator | Data | 20 iunie 2015 17:00:32 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 kb |
#include <stdio.h>
#define modulo2 1999999973
long long n,p,result = 1;
int compute(int n, int p){
if (p == 0) return 1;
if (p == 1) return n % modulo2;
if(p % 2 == 0)
return compute(n*n, p/2) % modulo2 ;
else {
return (n * compute(n*n, (p-1)/2)) % modulo2;
}
}
int main(){
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%lld %lld ", &n, &p);
result = compute(n,p);
printf("%lld", result);
return 0;
}
