Cod sursa(job #763641)

Utilizator igsifvevc avb igsi Data 2 iulie 2012 19:25:20
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.41 kb
#include <stdio.h>

const long long MODULO = 1999999973;
long long n, p, result, i;
FILE *in, *out;

int main()
{
	in = fopen("lgput.in", "r");
	out = fopen("lgput.out", "w");
	
	fscanf(in, "%lu %lu", &n, &p);
	
	result = 1;
	for(i = 0; (1 << i) <= p; i++)
	{
		if((1 << i) & p)
			result = (result * n) % MODULO;
		n = (n * n) % MODULO;
	}
	
	fprintf(out, "%lu\n", result);
	
	fclose(in);
	fclose(out);
	return 0;
}