LeetCode 50. Pow(x, n)

来源:互联网 发布:拍照软件带时间 编辑:程序博客网 时间:2024/05/11 05:54

问题

https://leetcode.com/problems/powx-n/

解法

计算出2的幂次个x相乘的结果,然后将n分解成2的幂次,使用log(n)次即可求得结果。

class Solution {public:    double myPow(double x, int n) {        if (x ==0.0 && n == 0)            return 0.0/0.0;        double ret = 1.0;        bool flag;        if (n>0)            flag = false;        else{            flag = true;            if (n == INT_MIN)            {                ++n;                ret/= x;            }            n = -n;        }        double t = x;        for (int i=0; n&& i<32; ++i, n>>=1)        {            if (n&0x01)            {                if (flag)                    ret /= t;                else                    ret*= t;            }            t = t*t;        }        return ret;    }};
0 0
原创粉丝点击