Cod sursa(job #916827)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 16 martie 2013 22:05:42
Problema Ridicare la putere in timp logaritmic Scor 100
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 = a%M;
    if(b==1)return a;
    if(b==0)return 1;
    if(b&1)
        return a*lgput(a*a,(b-1)/2)%M;
    return lgput(a*a,b/2)%M;
}

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