Cod sursa(job #2519747)

Utilizator geo_uwuManolachi George geo_uwu Data 8 ianuarie 2020 13:22:26
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.47 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
unsigned int n, p;
int putere(unsigned long long n, unsigned long long p)
{
	if (p < 0)
		return putere(1 / n, -p);
	else if (p == 0)
		return 1;
	else if (p == 1)
		return n;
	else if (p % 2 != 0)
		return n * putere(n * n, (p - 1) / 2);
	else if (p % 2 == 0)
		return putere(n * n, p / 2);
}
int main()
{
	in >> n >> p;
	out << putere(n, p);
	return 0;
}