Leetcode50. Pow(x, n)(快速幂)

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10 输出: 1024.00000

示例 2:

输入: 2.10000, 3 输出: 9.26100

示例 3:

输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25

说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

注意输入的n可能为负数

如果不把n转为longlong类型,当n = INT_MIN, n = -n时就会超出int的范围

INT_MIN = -2147483648;

INT_MAX = 2147483647;

class Solution {
public:
    double myPow(double x, int n)
    {
        bool flag = true;
        long long nn = n;
        if(n < 0)
        {
            flag = false;
            nn = -nn;
        }
        double temp = x;
        double res = 1;
        while(nn)
        {
            if((nn & 1) == 1)
            {
                res *= temp;
            }
            nn >>= 1;
            temp *= temp;
        }
        if(flag)
            return res;
        else
            return 1/res;
    }
};

原文地址:https://www.cnblogs.com/lMonster81/p/10433867.html