Cod sursa(job #604277)

Utilizator razyelxrazyelx razyelx Data 21 iulie 2011 15:13:59
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#	include <fstream>
using namespace std;

const long long prim = 1999999973;

int main(){

	
	ifstream fin ("lgput.in");
	ofstream fout ("lgput.out");
	
	int n, p, pow2, r, i, j, rf;
	
	fin >> n >> p;
	
	rf = 1;
	j = 1;
	
	while ( j <= p) {
		
		int k = 0;
		for (i = 1, pow2 = 1, r = n; i <= p - j + 1; i = 1 << pow2) { 
			
			r = (r * r) % prim; 
			pow2++;
			k = i;
		}
		
		j += k;
		
		rf = (rf * r) % prim;
	
	}

	fout << rf;
	
	return 0;
}