Cod sursa(job #2128529)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 11 februarie 2018 19:56:46
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <fstream>
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
typedef unsigned long long int ulint;
#define BIGPRIME 1999999973

ulint pow(ulint n, ulint p)
{
	if (p == 0) return 1;
	if (p == 1) return n % BIGPRIME;
	if (p % 2 == 0) return pow(n, p / 2)*pow(n, p / 2) % BIGPRIME;
	return n * pow(n, p / 2)*pow(n, p / 2) % BIGPRIME;
}

int main()
{
	ulint n, p;
	in >> n >> p;
	out << pow(n, p) % BIGPRIME;
	return 0;
}