Cod sursa(job #1791429)

Utilizator andreiugravuFMI Andrei Zugravu andreiugravu Data 29 octombrie 2016 12:59:41
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
//Lgput

#include <fstream>

using namespace std;

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

#define MOD 1999999973

void expNP(long long &rez, long long N, long long P) {
    if(P == 1) { rez = N; return; }
    long long aux;
    if(P%2 == 0) {
        expNP(rez, N, P/2);
        aux = (rez*rez)%MOD;
        rez = aux;
        return;
    }
    if(P%2 == 1) {
        expNP(rez, N, P-1);
        aux = (rez*N)%MOD;
        rez = aux;
        return;
    }
}

int main()
{
    long long N, P, rez;

    fin>>N>>P;

    expNP(rez, N, P);

    fout<<rez;

    fin.close();
    fout.close();

    return 0;
}