Cod sursa(job #1371290)

Utilizator GinguIonutGinguIonut GinguIonut Data 3 martie 2015 20:24:28
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
int n,x,p;
int loga(int a, int b)
{
    if(b<0)
        return loga(1/a,-n);
    else
        if(b==0)
            return 1;
        else
            if(b==1)
                return a;
            else
                if(b%2==0)
                    return loga(a*a,b/2)%1999999973;
                else
                    if(b%2==1)
                        return a*loga(a*a,(b-1)/2)%1999999973;
}
int main()
{
fin>>n>>p;
fout<<loga(n,p);
    return 0;
}