Cod sursa(job #706673)

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

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

	long long n,a,y=1,x,k,step;
	scanf("%I64d %I64d",&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("%I64d\n",y);
}