假设我们有一个包含n个数字的数组,那么我们必须在将所有n个数字相乘后返回连续零的个数。
因此,如果输入类似于[200、20、5、30、40、14],则输出将为6,例如200 * 20 * 5 * 30 * 40 * 14 = 336000000,最后有六个0。
为了解决这个问题,我们将遵循以下步骤-
定义一个函数count_fact_two()。这将花费n
计数:= 0
当n mod 2为0时
数:=数+ 1
n:= n / 2(仅商为整数)
返回计数
定义一个函数count_fact_five()。这将花费n
计数:= 0
当n mod 5为0时
数:=数+ 1
n:= n / 5(仅商为整数)
返回计数
从主要方法中,执行以下操作-
n:= A的大小
二元:= 0,五元:= 0
对于0到n范围内的i,执行
二进制:=二进制+ count_fact_two(A [i])
五人制:=五人制+ count_fact_five(A [i])
如果两点到五点,那么
返回二
除此以外,
回击
让我们看下面的实现以更好地理解-
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