您的位置:首页 > 其它

LeetCode 50. Pow(x, n)

2016-04-26 20:56 302 查看

问题

https://leetcode.com/problems/powx-n/

解法

计算出2的幂次个x相乘的结果,然后将n分解成2的幂次,使用log(n)次即可求得结果。

class Solution {
public:
double myPow(double x, int n) {
if (x ==0.0 && n == 0)
return 0.0/0.0;
double ret = 1.0;
bool flag;
if (n>0)
flag = false;
else{
flag = true;
if (n == INT_MIN)
{
++n;
ret/= x;
}
n = -n;
}
double t = x;
for (int i=0; n&& i<32; ++i, n>>=1)
{
if (n&0x01)
{
if (flag)
ret /= t;
else
ret*= t;
}
t = t*t;
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: