Cod sursa(job #146404)
Utilizator | Bondane Cosmin cos_min | 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));
}