Cod sursa(job #1182391)

Utilizator MarianMMorosac George Marian MarianM Data 6 mai 2014 11:48:54
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <fstream>
using namespace std;

#define PRIME 1999999973

ifstream fin("lgput.in");
ofstream fout("lgput.out");

int i, a, b, n, k, p;
long long d;
bool bin[33];

int main(){

	fin >> a >> b;
	n = PRIME;

	i = 0;
	while (b) { bin[i++] = b % 2;  b /= 2; }

	k = i - 1;	p = 0;  d = 1;
	for (i = k; i >= 0; i--){
		p = 2 * p;
		d = (d*d) % n;
		if (bin[i]){
			d = (d*a) % n;
		}
	}

	fout << d;

	return 0;