Cod sursa(job #345082)

Utilizator AstronothingIulia Comsa Astronothing Data 1 septembrie 2009 17:28:20
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>

using namespace std;

long long pow(long long n,long long p)
{
    long long res = 1;
    long long crtpow = n;
    long long pow2 = 2;
    if(!p) return 1;
    if(p%2) res *= n;
    while(pow2<=p)
    {
        crtpow *= crtpow;
        crtpow %= 1999999973;
        if(pow2 & p) res *= crtpow;
        pow2 <<= 1;
        res %= 1999999973;
        pow2 %= 1999999973;
    }
    return res;
}

int main()
{
    long long n,p;
    ifstream f("lgput.in");
    ofstream f2("lgput.out");
    f>>n>>p;
    f2<<pow(n,p);
    return 0;
}