Cod sursa(job #2439419)

Utilizator petru.vladVlad Petru-Marius petru.vlad Data 15 iulie 2019 20:46:56
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.44 kb
#include<fstream>
using namespace std;

#define modulo 1999999973


int exponent(int, int);

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

	int long n, p;
	fin >> n >> p;
	
	fout << exponent(n, p) % modulo;

	return 0;
}

int exponent(int n, int p)
{
	if (p == 0)
		return 1;
	if (p == 1)
		return n;

	if (p & 1)
		return n * exponent(n * n, (p - 1) / 2);
	else
		return exponent(n * n, p / 2);
}