Cod sursa(job #778130)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 14 august 2012 00:03:53
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb

#include <cstdio>

inline unsigned int power (unsigned long long base, unsigned int exponent)
{
	static const unsigned int MODULO(1999999973);
	unsigned int result(1);
	for (unsigned int bit(0x01) ; bit < exponent ; bit <<= 1)
	{
		if (exponent & bit)
		{
			result *= base;
			result %= MODULO;
		}
		base *= base;
		base %= MODULO;
	}
	return result;
}

int main (void)
{
	std::freopen("lgput.in","r",stdin);
	unsigned int n,p;
	std::scanf("%u%u",&n,&p);
	std::fclose(stdin);
	std::freopen("lgput.out","w",stdout);
	unsigned int result(power(n,p));
	std::printf("%u\n",result);
	std::fclose(stdout);
	return 0;
}