Cod sursa(job #443296)

Utilizator S7012MYPetru Trimbitas S7012MY Data 16 aprilie 2010 17:31:59
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <cstdio>
#define REST 1999999973

long putere(unsigned long x,unsigned long y) {
	unsigned long rezultat=1,baza=x,exponent=y;
	while(exponent>0) {
		while(!(exponent%2)) {
			exponent>>=1;
			baza=(baza*baza)%REST;
		}
		exponent--;
		rezultat=(rezultat*baza)%REST;
	}
	return rezultat;
}

int main() 
{
	unsigned long n,p;
	FILE *f=fopen("lgput.in","r");
	FILE *g=fopen("lgput.out","w");
	fscanf(f,"%lu %lu",n,p);
	fprintf(g,"%lu",putere(n,p));
	fclose(f);
	fclose(g);
	return 0;
}