class Solution {
public:
double myPow(double x, int n) {
if(n == 0) return 1;
if(n < 0) return myPow(1 / x, - 1 - n) / x;
if(n % 2) return myPow(x, n - 1) * x;
double temp = myPow(x, n / 2);
return temp * temp;
}
};
class Solution {
public:
double myPow(double x, int n) {
long long N = n;
double ans = 1;
if(N < 0) {
x = 1 / x;
N = -N;
}
while(N) {
if(N&1) ans *= x;
x *= x;
N >>= 1;
}
return ans;
}
};