Cod sursa(job #599000)
| Utilizator | Data | 27 iunie 2011 18:39:04 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
#define MOD 1999999973
unsigned long xs,ps,rez;
long put(long x, long n)
{
if (n==0) return 1;
else if (n<0) return (1/put(x,-n))%MOD;
else if (n==1) return (x)%MOD;
else if (n%2==0) return (put(x,n/2)*put(x,n/2))%MOD;
else if (n%2==1) return (x*put(x,(n-1)/2)*put(x,(n-1)/2))%MOD;
}
int main ()
{
FILE *f, *g;
f=fopen("lgput.in", "r");
fscanf(f, "%d %d", &xs,&ps);
g=fopen("lgput.out", "w");
fprintf(g, "%d", put(xs,ps));
fclose(f); fclose(g);
return 0;
}