leetcode -- Pow(x, n)

不求与人相比,但求超越自己

[问题描述]

 Implement pow(xn).

[解题思路]

任何一个数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 }

 

posted on 2014-08-15 10:10  雨歌_sky  阅读(109)  评论(0编辑  收藏  举报

导航