分类:快速幂
快速幂又叫反复平方法。快速幂的算法思想如下图:
时间复杂度O(logn)
题目
实现函数double Power(double base, int exponent),求base的 exponent次方。
不得使用库函数,同时不需要考虑大数问题。
只要输出结果与答案的绝对误差不超过 10−2
即视为正确。
注意:
不会出现底数和指数同为0的情况
当底数为0时,指数一定为正
样例1
输入:10 ,2
输出:100
样例2
输入:10 ,-2
输出:0.01
java代码(快速幂)
class Solution {
public:
double Power(double x, int n) {
typedef long long LL;
bool is_minus = n < 0;
double res = 1;
for (LL k = abs(LL(n)); k; k >>= 1) {
if (k & 1) res *= x;
x *= x;
}
if (is_minus) res = 1 / res;
return res;
}
};