Cod sursa(job #981221)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 6 august 2013 16:17:47
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#define DIV 1999999973

long long pow1(unsigned a, unsigned b)
{
	long long exp = a;
	while (--b)
		exp = (exp * a) % DIV;

	return exp;
}


long long pow2(long long n, long long p)
{
	if (p == 0) 	return 1;
	if (p == 1)		return n;

	if (p%2) 
		return n * pow2(n * n % DIV, p / 2) % DIV;
	else
		return pow2(n * n % DIV, p / 2) % DIV;
}


int main()
{
	unsigned N, P;

	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);

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

	printf("%lld\n", pow2(N, P));
	
	return 0;
}