Mai intai trebuie sa te autentifici.
Cod sursa(job #664613)
| 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[50];
int main () {
unsigned long long int a,b,i,p=1,dim=0;
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%lld %lld",&a,&b);
for(;b;){
if(b%2==1)f[++dim]=1;
else f[++dim]=0;
b=b/2;
}
for(i=dim;i>=1;--i){
if(f[i]==1){
p=((p*p)%1999999973*a)%1999999973;
}
else p=(p*p)%1999999973;
}
printf("%lld",p);
return 0;
}