Cod sursa(job #627876)

Utilizator paul24090FMI - Balauru Paul paul24090 Data 30 octombrie 2011 21:00:29
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>

using namespace std;

ifstream fi("lgput.in");
ofstream fo("lgput.out");

long n,p,rez;

long pow2(long n,long p)
{
	if(p==0)
		return 1;
	else if(p%2==0)
	{
		long q=pow2(n,p/2);
		while(q>=1999999973)
			q-=1999999973;
		q=q*q;
		while(q>=1999999973)
			q-=1999999973;
		return q;
	}
	else 
	{
		long q=pow2(n,(p-1)/2);
		while(q>=1999999973)
			q-=1999999973;
		q=q*q;
		while(q>=1999999973)
			q-=1999999973;
		q=q*n;
		while(q>=1999999973)
			q-=1999999973;
		return q;
	}
}

int main()
{
	fi>>n>>p;
	fi.close();
	rez=pow2(n,p);
	fo<<rez;
	fo.close();
	return 0;
}