Cod sursa(job #2797200)

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

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