トピック
回答
ピット1。この質問には負の数がある可能性があります。高速電力を使用して正の数に変換し、最後に逆数を取ります。
ピット2。nが負の無限大に等しい場合、反対の数を取るとintの範囲を超えます。 。長い長い
コード
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;
}
};