题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0

思路

对于正数$exponent$,直接用快速幂在$log(exponent)$复杂度内求解,对于负数$exponent$,将其变成整数,将$base$变为$1.0/base$

class Solution {
public:
    double Power(double base, int exponent) {
        double ans=1.0;
        if(exponent<0){
            base=1.0/base;
            exponent=-exponent;
        }
        while(exponent){
            if(exponent&1)ans*=base;
            base=base*base;
            exponent>>=1;
        }
        return ans;
    }
};
Last modification:August 10th, 2020 at 04:42 pm