题目描述
实现函数double Power(double base, int exponent),求base的 exponent次方。
不得使用库函数,同时不需要考虑大数问题。
只要输出结果与答案的绝对误差不超过 10−2 即视为正确。
注意:
- 不会出现底数和指数同为0的情况
- 当底数为0时,指数一定为正
- 底数的绝对值不超过 10,指数的绝对值不超过 109。
样例1
输入:10 ,2 输出:100
样例2
输入:10 ,-2 输出:0.01
方法一:快速幂 O(logn)
class Solution { public: double Power(double base, int exponent) { typedef long long int LL; bool is_minus = exponent < 0; double res = 1; for (LL k = abs((LL)exponent); k; k >>= 1) { if (k & 1) res *= base; base *= base; } if (is_minus) res = 1 / res; return res; } };
欢迎大家在评论区交流~