Cod sursa(job #1647141)

Utilizator AtthosTheGreatBrumar Raul AtthosTheGreat Data 10 martie 2016 19:08:29
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <fstream>

using namespace std;

ifstream f("lgput.in");
ofstream g("lgput.out");

long putere(int x, int n)
{
	if (n < 0)
		return putere(1 / x, 0-n);
	else if (n == 0)
		return 1;
	else if (n == 1)
		return x;
	else if (n % 2 == 0)
		return putere(x * x, n / 2);
	else if (n % 2 == 1)
		return x * putere(x * x, (n - 1) / 2);
	return 1;
}

int main()
{
	int x, n;
	f >> x;
	f >> n;

	g << putere(x, n);
	
	f.close();
	g.close();
	return 0;
}