Cod sursa(job #723063)

Utilizator RengelBotocan Bogdan Rengel Data 24 martie 2012 21:11:56
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<cstdio>

#define modulo 1999999973

int long long N,P;

int long long pow(int base, int power){
	
	if(power == 1) return base%modulo;
	else if(power%2==0){
		int x = pow(base,power/2);
		return ((x%modulo)*(x%modulo))%modulo;
	}
	else if(power%2==1){
		int x = pow(base,(power-1)/2);
		return ((((x%modulo)*(x%modulo))%modulo)*(base%modulo))%modulo;
	}
	return 1;
	
}

int main(){
	
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	
	scanf("%lld%lld",&N,&P);
	
	printf("%lld",pow(N,P));
	
	return 0;
	
}