Cod sursa(job #345992)

Utilizator kungfuNoName kungfu Data 6 septembrie 2009 01:08:34
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <iostream>
#include <fstream>
using namespace std;
const int m = 1999999973;

long sol(unsigned int n, unsigned int p){
	
	long power = n;
	long ret = 1;

	for (unsigned int i = 0; (1 << i) <= p; ++i){
		if (((1 << i) & p) > 0)
			ret = (ret * power) % m;
		power = (power * power) % m;		
	}

	return ret;
}

int main()
{
	unsigned int n;
	unsigned int p;

	ifstream fin ("lgput.in");
	fin >> n >> p;
	fin.close();
 
	ofstream fout ("lgput.out");
	fout << sol(n, p);
	fout.close();

}