Cod sursa(job #515677)
Utilizator | Vlasceanu Razvan vlasceanu | Data | 22 decembrie 2010 03:59:07 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <fstream>
#include <iostream>
#define in "lgput.in"
#define out "lgput.out"
typedef long long ul;
using namespace std;
ul NlaP(ul x, ul n)
{
if (n==0)return 1;
if (n<0) return (-1)*NlaP(x,(-1)*n);
if (n%2==1) return (x*NlaP(x,(n-1)/2)*NlaP(x,(n-1)/2));
else return (NlaP(x,n/2)*NlaP(x,n/2));
}
int main()
{
ofstream fout(out);
ifstream fin(in);
ul n,p;
fin>>n>>p;
fout<<NlaP(n,p);
fin.close();
fout.close();
return 0;
}