剑指 Offer 16. 数值的整数次方
作者:互联网
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= $x^n$ <= 104
解析:
快速幂即可,注意int最小值
class Solution { public: double quick(double a, long long b) { double ret = 1; while(b) { if(b & 1) ret *= a; a *= a; b >>= 1; } return ret; } double myPow(double x, int n) { bool flag = 0; long long N = n; if(n < 0) flag = 1, N = -N; return flag ? 1 / (double)quick(x, N) : quick(x, N); } };
标签:Offer,double,示例,long,quick,flag,16,ret,次方 来源: https://www.cnblogs.com/WTSRUVF/p/16180976.html