Cod sursa(job #223408)
| Utilizator | Data | 28 noiembrie 2008 16:38:19 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include <stdio.h>
long a, b, c=1999999973, rez;
int main()
{
long p=1, pp, v, vv;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%ld %ld", &a, &b);
v=a;
a%=c;
b%=(c-1);
while (p<b)
{
pp=1;
vv=a;
while (p+pp<=b)
{
p+=pp;
pp+=pp;
v*=vv;
v%=c;
vv*=vv;
vv%=c;
}
}
v%=c;
printf("%ld\n", v);
return 0;
}
