for this problem, I learned a new method called fast mean. please see it in details.
class Solution {
public:
double pow(double x, int n) {
if(n == 0)
return 1.0;
if(n<0)
{
if(n == INT_MIN)
return 1.0/pow(x,INT_MAX)*x;
else
return 1.0/pow(x,-n);
}
double ans = 1.0;
for(;n>0;x = x*x,n = n>>1)
{
if(n&1 == 1) ans = ans*x;
}
return ans;
}
};