Cod sursa(job #153418)
Utilizator | Data | 10 martie 2008 15:23:59 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
#define INF "lgput.in"
#define OUF "lgput.out"
const long clb=(long)1999999973;
long n,p;
long long logpow()
{
long i;
long long prod,ret;
ret=1;prod=n;
for(i=0;(1<<i)<=p;++i)
{
if(p&(1<<i)) ret=(ret*prod)%clb;
prod=(prod*prod)%clb;
}
return ret%clb;
}
int main()
{
FILE *in,*out;
in=fopen(INF,"r");
out=fopen(OUF,"w");
fscanf(in,"%lu%lu",&n,&p);
fprintf(out,"%llu",logpow());
fclose(in);fclose(out);
return 0;
}