Cod sursa(job #146406)

Utilizator cos_minBondane Cosmin cos_min Data 1 martie 2008 17:54:52
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>>1));
    
    if ( (C&1) ) return MOD(MOD(MOD(H)*MOD(H))*MOD(N));
    else         return MOD(MOD(H)*MOD(H));
}