Cod sursa(job #1896492)

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

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

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

	for (unsigned 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");

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

	in.close();

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

	out << pow(n, p)<<"\n";

	out.close();

	return 0;
}