Cod sursa(job #915559)

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

ULL lgput(unsigned int a, unsigned int 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;
    ULL res = lgput(a,b)%M;
    out << res;
}