Cod sursa(job #1452364)

Utilizator Player1Player 1 Player1 Data 20 iunie 2015 17:02:38
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <stdio.h>
#define modulo2 1999999973
long long n,p,result = 1;

int compute(int n, int p){
	if (p == 0) return 1;
	if (p == 1) return n % modulo2;

	if(p % 2 == 0)
		return compute(n*n, p/2) % modulo2 ;
	else {
		return (n * compute(n*n, (p-1)/2)) % modulo2;
	}

}

int main(){
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);
	scanf("%lld %lld ", &n, &p);

	result = compute(n,p) % modulo2;

	printf("%lld", result);
	return 0;
}