在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
广告