Cod sursa(job #1411942)

Utilizator OrolesVultur Oroles Data 1 aprilie 2015 00:39:35
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <fstream>

static const int mod = 1999999973;

long long expSquare(long long x, long long n)
{
	if ( n < 0 ) return 1;
	else if ( n == 0 ) return 1;
	else if ( n == 1 ) return x % mod;
	else if ( n % 2 == 0 ) return expSquare((x*x)%mod ,(n/2)%mod)%mod ;
	else if ( n % 2 == 1 ) return (x * (expSquare((x*x)%mod,(n/2)%mod))%mod)%mod;
}

int main( int argc, char* argv[] )
{
	std::ifstream input( "lgput.in" );
	std::ofstream output( "lgput.out" );

	long long N,P;
	input >> N >> P;

	output << expSquare(N,P) ;

	input.close();
	output.close();
	return 0;
}