Cod sursa(job #2683457)

Utilizator Un.wiseApetrei George Un.wise Data 11 decembrie 2020 13:30:00
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("lgput.in");
ofstream out("lgput.out");
#define number long long
const int m = 1999999973;

number myPow(number b, number e);
int t,a,b;

int main() {


	in >> a >> b;
	out << myPow(a, b);
	--t;

	in.close();
	out.close();
	return 0;
}

number myPow(number b, number e) {
	number sol = 1;
	for (number i = 0; (1 << i) <= e; ++i) {

		if (((1 << i) & e) > 0) {// Daca bitul i din p este 1 atunci adaugam n^(2^i) la solutie 
			sol = (sol * b) % m;
		}

		b = (b * b) % m; // Inmultim a cu a ca sa obtinem n^(2^(i+1))
	}
	return sol;
}