Cod sursa(job #1045258)

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

#define MOD 1999999973

using namespace std;

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

	else if (p == 1)
		return n;

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

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

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

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

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

	return 0;
}