Cod sursa(job #1046418)

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


unsigned long long MOD,n,p;

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

int main(){

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