Cod sursa(job #2439418)

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

#define modulo 1999999973


long long exponent(long long, long long);

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

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

	return 0;
}

long long exponent(long long n, long long 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);
}