Cod sursa(job #1452354)

Utilizator Player1Player 1 Player1 Data 20 iunie 2015 16:51:28
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 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);

	compute(n,p);

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