Cod sursa(job #1299921)

Utilizator somuBanil Ardej somu Data 23 decembrie 2014 22:25:09
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 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) << "\n";
    fin.close();
    fout.close();
    return 0;
}