在Python中計算n個數相乘後末尾連續零的個數
假設我們有一個包含n個數字的陣列,我們需要返回所有n個數字相乘後末尾連續零的個數。
例如,如果輸入是[200, 20, 5, 30, 40, 14],則輸出為6,因為200 * 20 * 5 * 30 * 40 * 14 = 336000000,末尾有六個0。
為了解決這個問題,我們將遵循以下步驟:
定義一個函式`count_fact_two()`。它將接收一個數字n作為引數。
計數器 := 0
當n模2等於0時,重複執行:
計數器 := 計數器 + 1
n := n / 2 (只取整數商)
返回計數器
定義一個函式`count_fact_five()`。它將接收一個數字n作為引數。
計數器 := 0
當n模5等於0時,重複執行:
計數器 := 計數器 + 1
n := n / 5 (只取整數商)
返回計數器
在主方法中,執行以下操作:
n := A的長度
twos := 0, fives := 0
對於i從0到n,重複執行:
twos := twos + count_fact_two(A[i])
fives := fives + count_fact_five(A[i])
如果 twos > fives,則
返回 twos
否則,
返回 fives
示例
讓我們來看下面的實現,以便更好地理解:
def count_fact_two( n ): count = 0 while n % 2 == 0: count+=1 n = n // 2 return count def count_fact_five( n ): count = 0 while n % 5 == 0: count += 1 n = n // 5 return count def get_consecutive_zeros(A): n = len(A) twos = 0 fives = 0 for i in range(n): twos += count_fact_two(A[i]) fives += count_fact_five(A[i]) if twos < fives: return twos else: return fives A = [200, 20, 5, 30, 40, 14] print(get_consecutive_zeros(A))
輸入
[200, 20, 5, 30, 40, 14]
輸出
6
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP