首页 > 其他 > 详细

Pow(x, n)

时间:2014-03-11 23:22:46      阅读:352      评论:0      收藏:0      [点我收藏+]

Implement pow(xn).

很有趣的题,第一次暴力乘了,超时。然后就想到多项式分解了,想到二进制,想到了取次数相当于二进制遇“0”不管,遇“1”乘x,移位取平方。

代码测试后出现负次数没有过,加了这部分代码就过了。

代码不难,优化只需要小动脑,还是挺好玩的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
    double pow(double x, int n) {
        double result =1;
        int flag = 0;
        if(n<0)flag =1;
        n= abs(n);
        stack<int> sk;
        while(n>0)
        {
            sk.push(n%2);
            n = n/2;
        }
        while(!sk.empty())
        {
            result *= result;
            if(sk.top() == 1) result *= x;
            sk.pop();
        }
        if(flag ==1)
        result =1/result;
        return result;
    }
};

  

Pow(x, n),布布扣,bubuko.com

Pow(x, n)

原文:http://www.cnblogs.com/pengyu2003/p/3595181.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!