Cod sursa(job #147526)
Utilizator | Data | 3 martie 2008 09:29:08 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.42 kb |
#include<stdio.h>
#define M 1999999973
long long v[40];
int main(){
long long n,p,sol=1,i;
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%lld%lld",&n,&p);
v[0]=n;
for(i=1;((long long)1<<i)<=p;i++)
v[i]=(v[i-1]*v[i-1])%M;
for(i=1;((long long)1<<i)<=p;i++)
if((1<<i)&p)
sol=(sol*v[i])%M;
printf("%lld\n",sol);
fclose(stdin);
fclose(stdout);
return 0;
}