Cod sursa(job #376119)

Utilizator RoCkyRomila RoCky Data 20 decembrie 2009 19:11:32
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#define mod 1999999973
std::ifstream in("lgput.in");
std::ofstream out("lgput.out");
long long power ( long long baza,long long exp)
{
	if(exp==1)
		return baza;
	if(exp%2==1)
		return (baza*power(baza,exp-1))%mod;
	else
	{
		long long x=(power(baza,exp/2)%mod);
		return ((x%mod)*(x%mod))%mod;
	}
}
int main()
{
	long long n,p;
	in>>n>>p;
	if(n==0)
	{
		out<<0;
		return 0;
	}
	if(n==1||p==0)
	{
		out<<1;
		return 0;
	}
	if(n%mod==0)
	{
		out<<0;
		return 0;
	}
	n%=mod;
	out<<(power(n,p)%mod);
	out.close();
	return 0;
}