题面
题解
坑点 1. 本题中 可能有负数 ,用快速幂需要转化成正数,最后再取倒数
坑点 2. 当n等于负无穷时,取相反数会超出int范围。要用long long
代码
class Solution {
public:
double Power(double x, int n) {
typedef long long LL;
bool is_minus = n < 0;
double res = 1;
LL k = abs(LL(n));
while (k) {
if (k & 1) res = res * x;
x = x * x;
k >>= 1;
}
if (is_minus) res = 1 / res;
return res;
}
};