Cod sursa(job #1046408)

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


long long MOD = 1999999973;

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

int main(){

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