Cod sursa(job #682844)

Utilizator tiriplicamihaiTiriplica Mihai Dragos tiriplicamihai Data 19 februarie 2012 16:56:54
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.57 kb
#include<stdio.h>

#define mod 1999999973

long long n, p;

long long power(long long b, long long e){
	if(e == 1)
		return b;
	else{
		if((e % 2) == 1)
			return b * power(b * b % mod, e / 2) % mod;
		else
			return power(b * b % mod, e / 2) % mod;
	}
}

int main(){
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);
	/*int i;
	long long a, sol = 1;
	scanf("%d %d", &n, &p);
	a = n;
	for(i = 0; (1<<i) <= p; i++){
		if((1<<i) & p)
			sol = (sol * a) % mod;
		a = (a * a) % mod;
	}*/
	printf("%lld\n", power(n, p));
	fclose(stdin);
	fclose(stdout);
	return 0;
}