Cod sursa(job #1299931)

Utilizator somuBanil Ardej somu Data 23 decembrie 2014 22:28:07
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <iostream>
#include <fstream>
#define MOD 1999999973
using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

long long lgput(long long n, long long p) {
    if (p == 1)
        return n;
    long val = (lgput(n, p/2) % MOD);
    if (p % 2 == 0)
        return ((val * val) % MOD);
    else
        return ((((val * val) % MOD) * n) % MOD);
}

int main() {
    long long n, p;
    fin >> n >> p;
    fout << lgput(n, p) % MOD<< "\n";
    fin.close();
    fout.close();
    return 0;
}