Cod sursa(job #2742673)

Utilizator michael_blazemihai mihai michael_blaze Data 21 aprilie 2021 15:07:05
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>

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

const int MOD = 1999999973;
unsigned long long ridicare_la_putere(unsigned long long x, unsigned long long n)
{
    if (n == 0)
        return 1;


    unsigned long long result;

    if (n & 1)
    {
        result = ridicare_la_putere(x, (n - 1) / 2) % MOD;
        return ((x % MOD) * result * result) % MOD;
    }

    result = ridicare_la_putere(x, n / 2) % MOD;

    return (result * result) % MOD;
}

int main() {
    unsigned long long x, n;
    fin >> x >> n;
    fout << ridicare_la_putere(x, n);
    return 0;
}