Cod sursa(job #2381431)

Utilizator ShumaherAdasga Shumaher Data 16 martie 2019 19:09:58
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <iostream>
#include <fstream>
#define MOD 1999999973
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");

long int N, P;

long int lgput(long int N, long int P) {
    long int y = 1;
    if(P == 0 || N == 1)
        return 1;
    while(P > 1)
        if(P % 2 == 0) {
            N = N * N % MOD;
            P = P / 2;
        } else {
            y = y * N % MOD;
            N = N * N % MOD;
            P = (P - 1) / 2;

        }
    return N * y;
}

int main() {
    in >> N >> P;
    out << lgput(N, P);

    return 0;
}