Cod sursa(job #1679426)

Utilizator TudorVersoiuVersoiu Tudor Sorin TudorVersoiu Data 7 aprilie 2016 22:39:34
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("lgput.in" );
ofstream g("lgput.out");
#define MOD(x) (x % 1999999973)

int N, P;

int square(int x) { return x*x; }

long long FastPow(int base, int exponent) {
    if ( exponent == 0 ) return 1;
    if ( exponent == 1 ) return base;

    if ( exponent%2 )
        return MOD(base * square(FastPow(base, (exponent-1) / 2)));
    else
        return MOD(square(FastPow(base, exponent/2)));
}

int main() {
    f >> N >> P;

    g << FastPow(N, P);
}