Cod sursa(job #3341169)

Utilizator Sabin1133Padurariu Sabin Sabin1133 Data 18 februarie 2026 12:14:26
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <iostream>

#define MOD 1999999973

unsigned long long log_pow_mod(unsigned int base, unsigned int exp, unsigned int m)
{
    unsigned long long acc = base;
    unsigned long long prod = 1;

    for (unsigned int e = 1; e != 0 && e <= exp; e <<= 1) {
        if (exp & e)
            prod = (prod * acc) % m;

        acc = (acc * acc) % m;
    }

    return prod;
}

int main()
{
    unsigned int base, exp;

    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);

    std::cin >> base >> exp;

    std::cout << log_pow_mod(base, exp, MOD) << "\n";

    return 0;
}