Cod sursa(job #2797203)

Utilizator mediocrekarmaChirvasa George Matei mediocrekarma Data 9 noiembrie 2021 15:27:59
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
using namespace std;

const int mod = 1999999973;
unsigned long long raiseToPower (unsigned long long nr, unsigned long long power) {
    if (power == 0) {
        return 1;
    }
    if (power == 1) {
        return nr;
    }
    if (power % 2 == 0) {
        return raiseToPower (nr * nr, power / 2) % mod;
    }
    return nr * raiseToPower (nr * nr, (power - 1) / 2) % mod;
}
int main() {
    ifstream fin ("lgput.in");
    ofstream fout ("lgput.out");
    unsigned long long nr, power;
    fin >> nr >> power;
    fout << raiseToPower (nr % mod, power);
    fin.close();
    fout.close();
}