Cod sursa(job #1282569)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 4 decembrie 2014 15:02:20
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <iostream>
#include <fstream>
using namespace std;
fstream in("lgput.in",ios::in);
fstream out("lgput.out",ios::out);

unsigned long putere(unsigned long x,unsigned long p)
{
    if(p<0)
        return putere(1/x,-p);
    else if(p==0)
        return 1;
    else if(p==1)
        return x;
    else if(p%2==0)
        return putere(x*x,p/2);
    else if(p%2!=0)
        return x*putere(x*x,(p-1)/2);
}

int main()
{
unsigned long n,p;

in>>n>>p;
in.close();
out<<putere(n,p);
out.close();


return 0;
}