Cod sursa(job #2296124)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 decembrie 2018 13:55:38
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;
long long putere(long long N,long long P)
{
    if(N==0) //daca numarul este zero, oricare ar fi puterea lui, afisam 1
        return 1;
    if(P==1) //daca puterea este 1, oricare ar fi numarul, rezultatul este el insusi
       return N%1999999973;
    if(P%2==0) //daca puterea este para
    return putere(N*N%1999999973,P/2)%1999999973;
    else //daca puterea este impara
    return N*putere(N*N%1999999973,(P-1)/2)%1999999973;
}


int main()
{
    ifstream fin("lgput.in");
    ofstream fout("lgput.out");
    long long N,P;
    fin>>N>>P;//citim numarul si puterea
    fout<<putere(N,P); //afisam ridicarea la putere
    fin.close();
    fout.close();
    return 0;
}