#include "stdafx.h"
#include <bitset>

double Power(double base, int exp)
{
	std::bitset<32> bits(exp);
	int numOf1 = bits.count();
	double tempResult[32];
	for(int i=0;i<32;i++)
		tempResult[i] = 1.0;

	int count=0;
	double power = 1.0;
	for(int i=0;i<32&&count<numOf1;i++)
	{
		if(i==0)
			power = base;
		else
			power = power * power;
		if(bits.at(i))
		{
			tempResult[i] = power;
			++count;
		}
	}
	power = 1.0;
	for(int i=0;i<32;i++)
	{
		if(bits.at(i))
			power *= tempResult[i];
	}
	return power;

}

int _tmain(int argc, _TCHAR* argv[])
{
	printf("%lf\n",Power(2.5,2));
	return 0;
}

相关文章:

  • 2022-12-23
  • 2021-08-09
  • 2021-08-11
  • 2022-12-23
  • 2022-12-23
  • 2021-05-21
  • 2022-02-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
  • 2021-05-26
相关资源
相似解决方案