Cod sursa(job #2728563)

Utilizator cazanbogdan2000Bogdan-Marian Cazan cazanbogdan2000 Data 23 martie 2021 13:50:24
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;

#define MOD 1999999973
typedef long long LL;

int fast_pow(int base, int exponent) {
        // TODO: Calculati (base ^ exponent) % mod in O(log exponent)
        if (exponent == 1) {
            return base;
        }
        LL x = fast_pow(base, exponent / 2);
        if (exponent % 2 == 0) {
            return (1LL  * (x%MOD) * (x % MOD)) % MOD;
        }
        else {
            return (((1LL  * (x%MOD) * (x % MOD)) % MOD) * (base % MOD)) % MOD;
        }
    }

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

    int base, exponent;
    fin >> base >> exponent;
    fout << fast_pow(base, exponent);
    fin.close();
    fout.close();
}