Cod sursa(job #148357)
Utilizator | Data | 4 martie 2008 10:41:39 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include <cstdio>
const int MOD = 1999999973;
int n,p;
int putere_2 ( int n, int e ) {
int r = n;
for (int i = 1; i <= e; ++i)
r = ((long long)r*r)%MOD;
return r;
}
int main() {
freopen("lgput.in","rt",stdin);
freopen("lgput.out","wt",stdout);
scanf("%d %d",&n,&p);
int rez = 1;
for (int bit = 0; p > 0; p /= 2, ++bit) {
if (p % 2 == 1) {
rez = ((long long)rez * putere_2(n,bit))%MOD;
}
}
printf("%d\n",rez);
return 0;
}