Cod sursa(job #346000)

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

long long sol(unsigned int n, unsigned int p){
	
	long long  power = n;
	long 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) << endl;
	fout.close();

}