Cod sursa(job #935240)
| Utilizator | Data | 2 aprilie 2013 13:41:43 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include <stdio.h>
#include <stdlib.h>
const long long MOD = 1999999973;
long long square(long long n,long long p)
{
if (p == 1) return n;
if (p % 2 == 0) return square(n*n%MOD,p/2)%MOD;
if (p % 2 == 1) return n*square(n*n%MOD, (p-1)/2)%MOD;
}
int main()
{
FILE *f = fopen("lgput.in","r");
FILE *g = fopen("lgput.out","w");
long long sol;
long long n, p;
fscanf(f,"%lld %lld", &n, &p);
sol = square(n,p);
fprintf(g,"%lld", sol);
fclose(f);
fclose(g);
return 0;
}
