Cod sursa(job #3351114)

Utilizator robert.stefanRobert Stefan robert.stefan Data 16 aprilie 2026 21:29:35
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
// https://infoarena.ro/problema/lgput

#include<fstream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

long long exp(int n, int p) {
	if(p == 0) {
		return 1; // cazul de baza: n^0 = 1
	}

	long long e = exp(n, p / 2);

    // folosim exponențiere rapidă
    // daca p este par: n^p = (n^(p/2))^2
    // daca p este impar: n^p = n * (n^(p/2))^2
    if(p % 2 == 0)
        return e * e;
    else
        return n * e * e;
}

int main() {
	int n, p;

	fin >> n >> p;

	fout << exp(n, p) << endl;

	fin.close();
	fout.close();

	return 0;
}