class Solution {
public:
double myPow(double x, int n) {
if (n == 0) {
return 1.0;
}
bool neg = n < 0;
long long ln = n;
if (ln < 0)
ln = -ln;
double ret = 1.0;
while(ln) {
if (ln & 1) {
ret *= x;
}
ln >>= 1;
x *= x;
}
if (neg) {
ret = 1.0 / ret;
}
return ret;
}
};