Cod sursa(job #432094)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 1 aprilie 2010 20:10:27
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<iostream>
#include<fstream>
#define modulo 1999999973

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

long long var;

long long lgput(long long int N, long long int P)
{	
	if(P==1)
		return N%modulo;
	else
		if(P==2)
			return (N*N)%modulo;
		else
		{
			if(P%2==0)
			{
				var = lgput(N,P/2);
				return (var*var)%modulo;
			}
			else
			{
				var = lgput(N,(P-1)/2);
				var = (var*var)% modulo;
				return (var*N) % modulo;
			}
		}
}
	
long long N,P,result;

int main()
{
	fin>>N;
	fin>>P;
	result=lgput(N,P);
	fout<<result;
	return 0;
}