Cod sursa(job #209713)
| Utilizator | Data | 24 septembrie 2008 13:15:12 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include <cstdio>
#define PRIM 1999999973
long long N, P, Ans, tmp;
int main () {
freopen ("lgput.in", "r", stdin);
freopen ("lgput.out", "w", stdout);
scanf ("%lld %lld\n", &N, &P);
for (long long step = Ans = 1, tmp = N; P; step <<= 1){
if (P & step){
Ans = (Ans * tmp) % PRIM;
P -= step;
}
tmp = (tmp * tmp) % PRIM;
//printf ("%lld %lld\n", Ans, tmp);
}
printf ("%lld\n", Ans);
return 0;
}
