Cod sursa(job #2544473)

Utilizator MarcGrecMarc Grec MarcGrec Data 12 februarie 2020 09:30:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
#include <cstdint>
using namespace std;

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

int64_t N, P;

int64_t NlaPMod(int64_t N, int64_t P, int64_t MOD);

int main()
{
    fin >> N >> P;

    fout << NlaPMod(N, P, 1999999973);

    fin.close();
    fout.close();
    return 0;
}

int64_t NlaPMod(int64_t N, int64_t P, int64_t MOD)
{
    if (P == 0) { return 1; }
    int64_t R = NlaPMod(N, P / 2, MOD);
    R = (R * R) % MOD;

    return (R * ((P & 1) ? N : 1)) % MOD;
}