LeetCode —— Pow(x, n)

来源:互联网 发布:js map foreach 编辑:程序博客网 时间:2024/06/18 05:08

链接:http://leetcode.com/onlinejudge#question_50

原题:

Implement pow(x, n)


思路:1次、2次、4次、8次这样算上去,其实就是n的二进制表示形式。

当然要小心n是负数和底数是+1 和-1的时候,要优化。

代码:

class Solution {public:    double pow(double x, int n) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (x == 1.0)            return 1.0;        else if (x == -1.0)            return n % 2 ? -1 : 1;                double answer = 1.0;        double base = x;        bool negative = n >= 0 ? false : true;        n = abs(n);        while (n) {            if (n & 0x1)                answer *= base;            n = n >> 1;            base = base * base;        }                if (negative)            return 1/answer;        else            return answer;    }};