Cod sursa(job #2740861)

Utilizator muiepulicimatacutactu muiepulici Data 14 aprilie 2021 16:01:58
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.53 kb
#include <iostream>
#include <fstream>

unsigned long long RidicareLogaritmica(unsigned long N, unsigned long P) {
	unsigned long long cpy = N;
	unsigned long ret = 1;

	while (P != 0) {
		if ((P & 1) == 1)
			ret = (ret * cpy) % 1999999973;

		cpy = (cpy * cpy) % 1999999973;

		P /= 2;
	}

	return ret;
}

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

	unsigned long N, P;
	fin >> N >> P;

	fout << RidicareLogaritmica(N, P) << '\n';

	fin.close();
	fout.close();

	return 0;
}