Cod sursa(job #664611)

Utilizator davidoceaSintamarian David davidocea Data 20 ianuarie 2012 15:09:17
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.39 kb
#include <cstdio>
int f[10000];
int main () {
	freopen("lgput.in","r",stdin);
	freopen("lgput.in","w",stdout);
	unsigned long long int a,b,i,p=1,k;
	scanf("%lld %lld",&a,&b);
	for(i=1;b!=0;++i){
		f[i]=b%2;
		b=b/2;
	}
	--i;
	k=i;
	for(i=k;i>=1;--i){
		if(f[i]==1){
			p=((p*p)%1999999973*a)%1999999973;
		}
		else {
			p=((p*p)%1999999973)%1999999973;
		}
	}
	printf("%lld",p);
}