leetcode -- Pow(x, n)
不求与人相比,但求超越自己
[问题描述]
Implement pow(x, n).
[解题思路]
任何一个数x均可以被表示成 x = K^(2^a + 2^b + .....)
1 double Solution::pow(double x, int n) 2 { 3 int flag = 1; 4 double ans = 1.0, tmp = x, minN = 0; 5 if (n < 0){ 6 if (n == INT_MIN){ 7 n++; 8 minN = 1; 9 } 10 flag = -1, n*=-1; 11 } 12 while(n){ 13 if(n&1==1) 14 ans *= tmp; 15 tmp *= tmp; 16 n >>= 1; 17 } 18 return flag == 1?(ans):(minN == 1?(1/(ans*x)):(1/ans)); 19 }