Cod sursa(job #2128509)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 11 februarie 2018 19:41:29
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 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 == 1) return n % BIGPRIME;
	if (p % 2 == 0) return pow(n, p / 2)*pow(n, p / 2) % BIGPRIME;
	return n * pow(n, (p-1) / 2)*pow(n, (p-1) / 2) % BIGPRIME;
}

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