Cod sursa(job #1937781)

Utilizator LazarAndreiLazar Andrei Teodor LazarAndrei Data 24 martie 2017 11:33:43
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>
using namespace std;

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

const int mod = 1999999973;
unsigned long long N, P;

unsigned long long exp_by_squaring (unsigned long long N, unsigned long long P) {
    if (P == 0)
        return 1;
    if (P == 1)
        return N % mod;
    if (P % 2) {
        return N * exp_by_squaring ((N * N)% mod, (P-1)/2) ;
    }
    return exp_by_squaring ((N*N)%mod, P/2) ;
}

int main()
{
    in >> N >> P;
    out << exp_by_squaring (N, P);
    return 0;
}