Cod sursa(job #664608)

Utilizator ephgstefana gal ephg Data 20 ianuarie 2012 15:04:44
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <cstdio>
int f[50];
int main () {
	unsigned long long int a,b,i,p=1,dim=0;
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	scanf("%lld %lld",&a,&b);
	for(;b;){
		if(b%2==1)f[++dim]=1;
		else f[++dim]=0;
		b=b/2;
	}
	
	for(i=dim;i>=1;--i){
		if(f[i]==1){
			p=((p%1999999973)*(p%1999999973)*a%1999999973)%1999999973;
		}
		else p=(p%1999999973*p%1999999973)%1999999973;
	}
	printf("%lld",p);
	return 0;
}