Cod sursa(job #1360334)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 25 februarie 2015 13:50:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
#include<string>

using namespace std;

#ifdef HOME
const string inputFile = "input.txt";
const string outputFile = "output.txt";
#else
const string problemName = "lgput";
const string inputFile = problemName + ".in";
const string outputFile = problemName + ".out";
#endif

typedef long long int lld;
const int MOD = 1999999973;

lld expLog(lld B, lld E) {
    lld t = B % MOD, i, sol = 1;

    for(i = E; i; i /= 2) {
        if(i & 1)
            sol = (sol * t) % MOD;
        t = (t * t) % MOD;
    }

    return sol;
}

int main() {
    int N, P;

    freopen(inputFile.c_str(), "r", stdin);
    freopen(outputFile.c_str(), "w", stdout);

    scanf("%lld%lld", &N, &P);

    printf("%lld\n", expLog(N, P));

    return 0;
}