Cod sursa(job #1081536)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 13 ianuarie 2014 18:33:38
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

const char infile[] = "lgput.in";
const char outfile[] = "lgput.out";

ifstream fin(infile);
ofstream fout(outfile);

const long long MOD = 1999999973;
const int oo = 0x3f3f3f3f;

inline long long lgPow(const long long &N, const long long &P) {
    if(P == 1)
        return N % MOD;
    long long aux = (N * N) % MOD;
    if(N % 2)
        return (N * lgPow(aux, (P - 1)/2)) % MOD;
    return lgPow(aux, P / 2);
}

int main() {
    long long N, P;
    fin >> N >> P;
    fout << lgPow(N % MOD, P) << '\n';
    fin.close();
    fout.close();
    return 0;
}