Cod sursa(job #1566454)

Utilizator Wh1plashOvidiu Taralesca Wh1plash Data 12 ianuarie 2016 08:17:57
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <iostream>
#include <fstream>
#define MOD 1999999973
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");

long long lgput(long long n, long long p)
{
    long long sol=1, a=n, i, m=MOD;
    for(i = 0; (1<<i) <= p; ++i){
        if(((1<<i) & p) > 0)
            sol = (sol * a) % m;
        a = (a * a) % m;
    }
    return sol;
}
int main()
{
    long long n,p;
    in>>n>>p;
    out<<lgput(n,p);
    return 0;
}