Cod sursa(job #1896477)

Utilizator TamasFlorin96Tamas Florin TamasFlorin96 Data 28 februarie 2017 18:34:26
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

bool bit_set(int number, int bit) {
	return ((number >> bit) & 1) == 1;
}

unsigned long long pow(int x, int n, int mod = 1999999973) {
	unsigned long long num = x,result = 1;

	for (int i = 0; (1 << i) <= n; i++) {
		if (bit_set(n, i)) {
			result *= num % mod;
		}

		num *= num % mod;
	}

	return result;
}

int main(void) {
	std::ifstream in("lgput.in");

	int n, p;
	in >> n >> p;

	in.close();

	std::ofstream out("lgput.out");

	out << pow(n, p);

	out.close();

	return 0;
}