Cod sursa(job #706611)

Utilizator valiro21Valentin Rosca valiro21 Data 5 martie 2012 19:44:46
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.36 kb
#include <cstdio>
#define MAX 1999999973

int main()
{
	freopen("lgput.in","rt",stdin);
	freopen("lgput.out","wt",stdout);

	long n,a,y=1,x,k,step;
	scanf("%ld %ld",&a,&n);

	while(n)
	{
		x=a;

		for(step=1,k=0;step<=n;step<<=1,k++);
		k--;
		step>>=1;

		for(long i=1;i<=k;i++)
			x*=x,x%=MAX;

		n-=step;
		y*=x,y%=MAX;
	}

	printf("%ld",y);
}