Cod sursa(job #981075)
| Utilizator | Data | 6 august 2013 13:00:17 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include<stdio.h>
#define MOD 1999999973
int N, P;
long res;
long exp(int N, int P){
if(P == 0)
return 1;
else
if(P == 1)
return N;
else
if(P % 2 == 1)
return N * exp(N * N, (P - 1) / 2);
else
if(P % 2 == 0)
return exp(N * N, P / 2);
}
int main(){
FILE *pf, *pg;
pf = fopen("lgput.in", "r");
pg = fopen("lgput.out", "w");
fscanf(pf, "%d %d", &N, &P);
res = exp(N, P);
res = res % MOD;
fprintf(pg, "%ld", res);
fclose(pf);
fclose(pg);
return 0;
}
