Cod sursa(job #2095087)

Utilizator catalinlupCatalin Lupau catalinlup Data 26 decembrie 2017 21:46:36
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <fstream>
#define INFILE "lgput.in"
#define OUTFILE "lgput.out"

using namespace std;

typedef unsigned long long ULL;
ifstream in(INFILE);
ofstream out(OUTFILE);
const int mod=1999999973;

ULL expBySquaring(ULL baza,int exp){
    if(exp==0) return 1;
    if(exp==1) return baza;
    if(exp%2==0) {

        ULL rez=expBySquaring(baza*baza,exp/2);
        rez=rez%mod;
        return rez;
    }
    if(exp%2==1) {
        ULL rez=baza*expBySquaring(baza*baza,(exp-1)/2)%mod;
        rez=rez%mod;
        return rez;
    }
}

int main()
{
    ULL n,p;
    in>>n>>p;
    out<<expBySquaring(n,p);
    return 0;
}