Cod sursa(job #379965)

Utilizator TabaraTabara Mihai Tabara Data 4 ianuarie 2010 15:05:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <fstream>
using namespace std;

#define in "lgput.in"
#define out "lgput.out"

const long long MOD = 1999999973;
long long N, P;

int main( void )
{
	freopen ( in ,"r", stdin );
	freopen ( out, "w", stdout );

	scanf ( "%lld%lld", &N, &P );

	int i;
	long long result = 1;
	long long A = N;
	for ( i = 0; (1LL<<i) <= P; ++i )
	{
		if ( P & (1LL<<i) ) { result = ((result * A)%MOD); }
		A = ( ( A * A ) % MOD );
	}

	printf ( "%lld\n", result );
	return 0;
}