Cod sursa(job #916807)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 16 martie 2013 21:53:14
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <fstream>
#define M 1999999973
#define ULL unsigned long long
using namespace std;
ifstream in ("lgput.in"); ofstream out ("lgput.out");

ULL lgput(ULL a, ULL b)
{
    a%=M;
    if(b==1)return a;
    if(b==0)return 1;
    if(b&1)
    {
        return a*lgput(a*a,(b-1)/2);
    }
    return lgput(a*a,b/2);
}

int main()
{
    unsigned int a,b;
    in >> a >> b;
    a%=M;
    ULL res = lgput(a,b)%M;
    out << res;
}