Cod sursa(job #1046387)

Utilizator BuseSorinFMI Buse Sorin-Marian BuseSorin Data 2 decembrie 2013 21:26:30
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<fstream>
#define MOD 1999999973
using namespace std;

long long ridicaLaPutere(long long n, long long b){
	if (b < 0){
		return ridicaLaPutere(1 / n, -b)%MOD;
	}
	else if (b == 0){
		return 1;
	}
	else if (b == 1){
		return n;
	}
	else if (b % 2 == 0){
		return ridicaLaPutere((n*n), b/2)%MOD;
	}
	else {
		return ridicaLaPutere((n*n), (b - 1) / 2)%MOD;
	}
}

int main(){

	ifstream f("lgput.in");
	long long n, p;
	f >> n >> p;
	ofstream cout("lgput.out");
	cout << ridicaLaPutere(n, p)%MOD;
}