码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-21 15:10:15      阅读:138      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!