Cod sursa(job #1383927)

Utilizator passfigAndrei passfig Data 10 martie 2015 19:19:41
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <stdlib.h>

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

int main(){
	long long a,b;
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    scanf("%lld %lld", &a, &b);
     
	// printf("a: ");
	// scanf("%lld",&a);
	// printf("b: ");
	// scanf("%lld",&b);
	if(a == 1)
		printf("%lld\n", 1LL);
	else{
		long long aux = rise(a,b) % 1999999973LL;
		printf("%lld\n", aux);
	}
	// printf("\na ^ b = %lld\n\n", aux);
	
	return 0;
}