Cod sursa(job #170172)
| Utilizator | Data | 2 aprilie 2008 14:27:39 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include<stdio.h>
#define input "lgput.in"
#define output "lgput.out"
long pow(long x, long y);
long n, p;
int main()
{
FILE *in, *out;
in = fopen (input, "r");
out = fopen (output, "w");
fscanf(in, "%ld%ld", &n, &p);
fprintf(out, "%ld", pow(n, p)%1999999973);
return 0;
}
long pow(long x, long y)
{
long prod = 1;
while(y)
{
if(y%2 == 1)
{
prod = prod * x;
prod = prod % 199999999973;
y-=1;
}
x *= x;
y /= 2;
}
return prod;
}
