Cod sursa(job #1045253)

Utilizator TwoOfDiamondsDaniel Alexandru Radu TwoOfDiamonds Data 1 decembrie 2013 10:31:50
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <fstream>

using namespace std;

unsigned long long lgput(unsigned long long n, unsigned long long p)
{
	if (p == 0)
		return 1;

	else if (p % 2 == 0)
	{
		return lgput(n*n, p / 2);
	}

	else if (p % 2 == 1)
	{
		return n * lgput(n*n, (p - 1) / 2);
	}
}

int main()
{
	ifstream IN("lgput.in");
	ofstream OUT("lgput.out");

	unsigned long long n, p;
	IN >> n >> p;

	OUT << lgput(n, p) % 1999999973 << endl;

	return 0;
}