Cod sursa(job #1371293)

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