Cod sursa(job #169267)
| Utilizator | Data | 1 aprilie 2008 15:08:53 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.47 kb |
#include <stdio.h>
#include <stdlib.h>
#define M 1999999973
long int mypow(unsigned int n, unsigned int p) {
if (p==0)
return 1;
if (p==1)
return n%M;
long int nr;
nr=mypow(n, p/2);
nr=nr*nr%M;
if (p%2==1) {
nr=nr*n%M;
}
return nr;
}
int main() {
unsigned int n, p;
;
FILE *fin, *fout;
fin=fopen("lgput.in", "rt");
fout=fopen("lgput.out", "wt");
fscanf(fin, "%d %d", &n, &p);
fprintf(fout,"%ld",mypow(n, p));
fclose(fout);
fclose(fin);
return 0;
}
