實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。
示例 1:
輸入: 2.00000, 10
輸出: 1024.00000
示例 2:
輸入: 2.10000, 3
輸出: 9.26100
示例 3:
輸入: 2.00000, -2
輸出: 0.25000
解釋: 2-2 = 1/22 = 1/4 = 0.25
說明:-100.0 < x < 100.0
n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。
按正常的那樣寫,for i in range(n).oj直接報超時。 所以不能用。 人家面試官也不想看你這麼水的邏輯。
二分法:
xn=
xn/2
∗xn/
2x^n = x^ * x^
xn=xn/
2∗xn
/2再來觀察二進位制 7 = 111, 每個位置分別對應4 2 1
2 7=
24∗2
2∗21
2^7 = 2^4 * 2^2 *2^1
27=24∗
22∗2
1
def mypow(self, x: float, n: int) -> float:
if x==0: return 0
res = 1
if n<0 : x,n = 1/x,-n
while n:
if n & 1: res *= x
x *= x
n >>= 1
return res
16 數值的整次方
實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。示例 1 輸入 2.00000,10 輸出 1024.00000 示例 2 輸入 2.10000,3 輸出 9.26100 示例 3 輸入 2...
數值的整次方
2 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題 如下 5 include6 using namespace std 7 8 bool g invaildinput false 9 10 ...
14 數值的整次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。使用連乘的方法得到的時間複雜度 是 n.這樣是找不到工作的。需要對他就行優化。就是 次冪 exponent 不是奇數就是偶數,當它是偶數時,如求 10 10,就是10 8 10 2 也就是1...