class Solution {
public:
double myPow(double x, int n) {
if(x < 1e-7 && x > -1e-7) return 0;
long b = n;
double res = 1.0;
if(b < 0) {
x = 1 / x;
b = -b;
}
while(b > 0) {
if((b & 1) == 1) res *= x;
x *= x;
b >>= 1;
}
return res;
}
};
发生一些奇奇怪怪的错误,对二进制位运算还是不熟练
& 相当于 %2
/ >>1 相当于 /2
本题用的是快速幂思路,注意数据类型 long double这里,而且浮点型不能直接和0比较