Cod sursa(job #1307310)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 1 ianuarie 2015 21:52:55
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <fstream>
using std::ifstream;
using std::ofstream;

typedef unsigned long long nr;

template <nr mod>
nr putere(const nr e, const nr x){
	if(x == 0){
		return 1 % mod; }
	else if(x == 1){
		return e % mod; }
	else if(x % 2 == 0){
		const nr tmp = putere<mod>(e, x/2);
		return (tmp * tmp) % mod; }
	else /* if(x % 2 == 1*/ {
		return (putere<mod>(e, x-1) * e) % mod; } }

int main(){
	ifstream f("lgput.in");
	nr e = 0, x = 0;
	f >> e >> x;
	ofstream g("lgput.out");
	g << putere<1999999973>(e, x);
	return 0; }