Cod sursa(job #664612)
| Utilizator | Data | 20 ianuarie 2012 15:09:53 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.4 kb |
#include <cstdio>
int f[10000];
int main () {
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
unsigned long long int a,b,i,p=1,k;
scanf("%lld %lld",&a,&b);
for(i=1;b!=0;++i){
f[i]=b%2;
b=b/2;
}
--i;
k=i;
for(i=k;i>=1;--i){
if(f[i]==1){
p=((p*p)%1999999973*a)%1999999973;
}
else {
p=((p*p)%1999999973)%1999999973;
}
}
printf("%lld",p);
}
