问题
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;
}
};