class Solution {
public:
double myPow(double x, int n) {
long N = n;
if (N < 0) {
x = 1.0 / x;
N = -N;
}
double res = 1;
while (N) {
if (N & 1)
res *= x;
x *= x;
N >>= 1;
}
return res;
}
};
fast power
class Solution {
public:
double pow(double x, long n) {
if (n == 1) return x;
double half = pow(x, n >> 1);
return n & 1 ? x * half * half : half * half;
}
double myPow(double x, int n) {
if (x == 1 || x == 0) return x;
if (n == 0) return 1;
if (n < 0) x = 1 / x;
// incase n == INT_MIN
long N = abs(long(n));
return pow(x, N);
}
};