Cod sursa(job #2838528)

Utilizator daniel23Malanca Daniel daniel23 Data 23 ianuarie 2022 22:23:18
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.46 kb
#include <fstream>

std::ifstream in("lgput.in");
std::ofstream out("lgput.out");

#define num 1999999973

uint64_t n, p, v[32];

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

    v[0] = n;
    for (int i = 1; i < 32; i++) {
        v[i] = v[i - 1] * v[i - 1];
        v[i] %= num;
    }

    uint64_t ans = 1;
    for (int i = 0; p > 0; i++, p >>= 1) {
        if (p & 1) {
            ans *= v[i];
            ans %= num;
        }
    }

    out << ans;
}