Cod sursa(job #146404)
| Utilizator | Data | 1 martie 2008 17:53:21 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
#define in "lgput.in"
#define out "lgput.out"
#define modulo 1999999973
#define MOD(H) H%modulo
long long N, P;
long long Pow(int);
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d", &N, &P);
printf("%d\n", Pow(P));
}
long long Pow(int C)
{
if ( C == 1 ) return MOD(N);
long long H = MOD(Pow(C/2));
if ( (C&1) ) return MOD(MOD(MOD(H)*MOD(H))*MOD(N));
else return MOD(MOD(H)*MOD(H));
}
