码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_50_Pow(x, n)

时间:2015-02-06 21:57:41      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:leetcode   c++   divide-and-conquer   

版权所有,欢迎转载,转载请注明出处,谢谢技术分享


Pow(x, n) 


Implement pow(x, n).


//vs2012测试代码
//divide-and-conquer
//classic
#include<iostream>

using namespace std;

class Solution {
public:
    double pow(double x, int n) 
	{
		double half;
		if(n==0)
			return 1.0;

		if(n>0)
		{
			half = pow( x , n/2 );
			if(n%2==0)
				return half*half;
			else
				return half*half*x;
		}
		else
		{
			n = -n;
			half = pow( x , n/2 );
			if(n%2==0)
				return 1.0/(half*half);
			else
				return 1.0/(half*half*x);
		}
    }
};


int main()
{
	double x;
	int n;
	cin>>x;
	cin>>n;
	Solution lin;
	cout<<lin.pow(x,n)<<endl;
}

//方法一:自测Accepted
//divide-and-conquer
//classic
class Solution {
public:
    double pow(double x, int n) {
		double half;
		if(n==0)
			return 1.0;

		if(n>0)
		{
			half = pow( x , n/2 );
			if(n%2==0)
				return half*half;
			else
				return half*half*x;
		}
		else
		{
			n = -n;
			half = pow( x , n/2 );
			if(n%2==0)
				return 1.0/(half*half);
			else
				return 1.0/(half*half*x);
		}
    }
};

//方法二:其他人
class Solution {
//divide-and-conquer
//classic
public:
	double pow(double x, int n) {
		if (n == 0) return 1.0;
		// Compute x^{n/2} and store the result into a temporary
		// variable to avoid unnecessary computing
		double half = pow(x, n / 2);
		if (n % 2 == 0)
			return half * half;
		else if (n > 0)
			return half * half * x;
		else
			return half * half / x;
	}
};


leetcode_50_Pow(x, n)

标签:leetcode   c++   divide-and-conquer   

原文地址:http://blog.csdn.net/keyyuanxin/article/details/43567119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!