Cod sursa(job #683107)

Utilizator blustudioPaul Herman blustudio Data 19 februarie 2012 23:18:53
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <fstream>
using namespace std;

#define m 1999999973

int n, p, r;
int p2[32], pmax;

inline void citire()
{
	ifstream fin("lgput.in");
	fin >> n >> p;
	fin.close();
}
inline void scriere()
{
	ofstream fout("lgput.out");
	fout << r << '\n';
	fout.close();
}
inline void exponentiere()
{
	r = 0;
	p2[0] = 1;
	for (pmax = 1; (1 << pmax) < p; pmax++)
		p2[pmax] = p2[pmax - 1] * p2[pmax - 1];
	for (int i = pmax; i >= 0; i--)
	{
		if (p >= (1 << i))
		{
			p -= 1 << i;
			r += p2[i];
		}
	}
}
int main()
{
	citire();
	exponentiere();
	scriere();
	return 0;
}