Cod sursa(job #345991)

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

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

	for (unsigned int i = 0; (unsigned int)(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();

}