Cod sursa(job #2273928)
| Utilizator | Data | 1 noiembrie 2018 09:57:36 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include<stdio.h>
int pmod(int x,int p,int m){
long long y,z;
if(p==0)
return 1;
if(p & 1){
y=pmod(x,p>>1,m);
z=(y*y)%m;
z=(z*x)%m;
}
else{
y=pmod(x,p>>1,m);
z=(y*y)%m;
}
return (int)z;
}
int main(){
int N,P;
int m=1999999973;
FILE* f= fopen("lgput.in","rt");
FILE* g= fopen("lgput.out","wt");
fscanf(f,"%d %d",&N,&P);
int r=pmod(N,P,m);
fprintf(g,"%d\n",r);
fclose(g);
fclose(f);
return 0;
}