Cod sursa(job #971216)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 8 iulie 2013 19:10:50
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>
#define m 1999999973

long long unsigned lgput(long long unsigned n, long long unsigned p)
{
	if(p < 0) return lgput(1 / n, -p) % m;
	if(p == 1) return n % m;
	if(p == 0) return 1;
	if(p % 2 == 0) return lgput((n % m) * (n % m), p / 2) % 1999999973;
	return (n % m) * (lgput((n % m)  * (n % m), (p - 1) / 2) % 1999999973);
}

int main(void)
{
	std::ifstream in("lgput.in");
	std::ofstream out("lgput.out");
	long long unsigned nV, nP;
	in >> nV >> nP;
	out << lgput(nV, nP) % 1999999973;
	return 0;
}