Cod sursa(job #423257)

Utilizator piroslPiros Lucian pirosl Data 23 martie 2010 17:59:18
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <stdio.h>

#define MOD 1999999973

long put(int n, int p)
{
	if(p == 2)
		return (((long long)n)*n) % MOD;
	if(p % 2 == 0) 
	{
		int a = put(n, p/2);
		return (((long long)a)*a) % MOD;
	}

	return (((long long)n) * put(n, p-1) ) % MOD;
}

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


	int n, p;
	scanf("%d %d", &n, &p);

	int res = put(n, p);

	printf("%d\n", res);

	return 0;
}