Cod sursa(job #981245)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 6 august 2013 16:39:15
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.67 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;
}

long long pow3(long long n, long long p)
{
	long long exp = 1;
	
	while (p)
	{
		if (p & 1)
			exp *= p;
		else
			exp *= exp;

		p >>= 1;
	}

	return n1;
}

int main()
{
	unsigned N, P;

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

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

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