Cod sursa(job #1459360)
Utilizator | Data | 9 iulie 2015 17:35:55 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.34 kb |
#include <stdio.h>
int main(){
FILE *fi = fopen("lgput.in","r");
FILE *fo = fopen("lgput.out","w");
int i,n,p;
int m = 1999999973;
long long a, sol = 1;
fscanf(fi,"%d %d",&n,&p);
a = n;
for(i = 0; (1<<i) <= p; ++i){
if( ((1<<i) & p) > 0){
sol = (sol * a) % m;
}
a = (a * a) % m;
}
fprintf(fo, "%d\n",sol);
return 0;
}