Cod sursa(job #170173)

Utilizator alle_forever13Alexandra Retegan alle_forever13 Data 2 aprilie 2008 14:30:23
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>

#define input "lgput.in"
#define output "lgput.out"

long long unsigned pow(long long unsigned x, long long unsigned y);

long long unsigned n, p;

int main()
{
	FILE *in, *out;

	in = fopen (input, "r");
	out = fopen (output, "w");

	fscanf(in, "%lld%lld", &n, &p);

	fprintf(out, "%lld", pow(n, p)%1999999973);

	return 0;

}

long long unsigned pow(long long unsigned x, long long unsigned y)
{
	long long unsigned prod = 1;

	while(y)
	{
		if(y%2 == 1)
		{
			prod = prod * x;
			prod = prod % 1999999973;
			y-=1;
		}

		x *= x;
		y /= 2;
	}

	return prod;

}