Cod sursa(job #2640369)

Utilizator ZahaZaharie Stefan Zaha Data 6 august 2020 11:01:46
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include <fstream>
#define ll long long
using namespace std;

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

ll n, p, m = 1999999973;

ll calcPut(ll exp, ll put) {
    if (put == 1)
        return exp;

    ll result;
    if (exp & 1) { // i odd
        result = calcPut(exp * exp, (n - 1) / 2);
    } else {
        result = calcPut(exp * exp, put / 2);
    }

    result %= m;
    return result;
}

int main() {
    fin >> n >> p;

    fout << calcPut(n, p);
    return 0;
}