Cod sursa(job #443296)
Utilizator | Data | 16 aprilie 2010 17:31:59 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
#define REST 1999999973
long putere(unsigned long x,unsigned long y) {
unsigned long rezultat=1,baza=x,exponent=y;
while(exponent>0) {
while(!(exponent%2)) {
exponent>>=1;
baza=(baza*baza)%REST;
}
exponent--;
rezultat=(rezultat*baza)%REST;
}
return rezultat;
}
int main()
{
unsigned long n,p;
FILE *f=fopen("lgput.in","r");
FILE *g=fopen("lgput.out","w");
fscanf(f,"%lu %lu",n,p);
fprintf(g,"%lu",putere(n,p));
fclose(f);
fclose(g);
return 0;
}