Cod sursa(job #671861)
| Utilizator | Data | 31 ianuarie 2012 22:42:30 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include <cstdio>
int main(){
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
int a,b,i,masca=1,lg;
scanf("%d %d",&a,&b);
//aflam dimensiunea puterii b in baza 2
for (i=0 ; i<=31 ; i++)
if ((masca<<i)&b)lg=i+1;
//lungimea e buna
long long pow=1;
for( i=lg ; i>=0 ; i-- ){
pow=(pow*pow)%1999999973;
if( (masca<<i) & b )pow=(pow*a)%1999999973;
}
printf("%lld",pow);
}
