首页 > 其他 > 详细

leetcode 50. Pow(x, n)(快速幂)

时间:2016-04-21 15:08:58      阅读:165      评论:0      收藏:0      [点我收藏+]

就是一个二分法快速幂。

但是需要注意的问题是这里是实数,而且n可能为负。
int的范围是-2,147,483,648 至 2,147,483,647。如果为-2,147,483,648那么直接n=-n就爆int了。所以先要把n换成longlong。

class Solution {
public:
    double myPow(double x, int n) {
        double ans = 1;
        unsigned long long p;
        if (n < 0) {
            p = -n;
            x = 1 / x;
        } else {
            p = n;
        }
        while (p) {
            if (p & 1)
                ans *= x;
            x *= x;
            p >>= 1;
        }
        return ans;
    }
};

 

leetcode 50. Pow(x, n)(快速幂)

原文:http://www.cnblogs.com/zywscq/p/5416848.html

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