Cod sursa(job #371831)

Utilizator avram_florinavram florin constantin avram_florin Data 7 decembrie 2009 09:34:51
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
//ridicare la putere in timp logaritmic
//infoarena -> arhiva educationala lgput
#include<cstdio>
using namespace std;
unsigned long long x,y;
int n,m,p,r;
int main ()
{
	freopen("lgput.in" , "r" , stdin);
	freopen("lgput.out" , "w" , stdout);
	scanf("%d%d" ,  &n , &p);
	m=1999999973;
	r=1;
	while(p)
		{
			if(p%2)
				{
					x=r*n;
					r=x%m;
					y=n*n;
					n=y%m;
					p=p/2;
				}
				else
				{
					y=n*n;
					n=y%m;
					p=p/2;
				}
		}
	printf("%d\n" , r);
	return 0;
}