题目描述
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
在LeectCode中,
对于样例3如果O(n)会TLE,可以使用快速幂,由于不存在大数,因此不需要long long。
但是指数输入 存在-2147483648 ,虽然不超过int范围(int -2147483648 ~ 2147483647),但是需要取个abs,因此需要对指数定义long long。
样例
样例1
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
样例2
输入: 2.00000, 10
输出: 1024.00000
样例3
输入:1.00000,2147483647
C++ 代码
class Solution {
public:
double Power(double base, int exponent) {
double ans=1;
long long q=abs(exponent);
while(q)
{
if(q&1) ans=ans*base;
base*=base;
q>>=1;
}
if(exponent<0) ans=1/ans;
return ans;
}
};