Cod sursa(job #299823)

Utilizator cristiprgPrigoana Cristian cristiprg Data 7 aprilie 2009 00:32:57
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>
#define MOD 1999999973

int n, p;

long power(int n, int p)
{
	if (p == 0)
		return 1;
	else
		if (p % 2 == 1)
			return (n % MOD * power(n, p-1) % MOD) % MOD;

		else
		{
			long chestie = power(n, p / 2) % MOD;
			return (chestie % MOD * chestie % MOD) % MOD;
		}

}

int main()
{
	FILE *f = fopen("lgput.in", "r");
	fscanf(f, "%d%d", &n, &p);
	fclose(f);

	f = fopen("lgput.out", "w");

	if (n != 1 && n != 0)
		fprintf(f, "%ld", power(n, p));
	else
		if (n == 0)
			fprintf(f, "0\n");
		else
			fprintf(f, "1\n");

	fclose(f);


	return 0;
}