在Python中查找具有n个末尾0的数字m的程序
假设我们有一个数字n。我们要找到最小的数字m,使得m的阶乘至少有n个0。
因此,如果输入为n = 2,则输出将为10,因为10!= 3628800,而9!= 362880,带有2个零的最小数字是10。
为了解决这个问题,我们将按照以下步骤进行 −
- 定义一个函数count_fives()。这将使用n。
- cnt:= 0
- 当n> 0时,执行以下操作
- n:=(n / 5)的底部
- cnt:= cnt + n
- 返回cnt
- 从主要方法开始,执行以下操作 −
- left:= 1
- right:= 5 ^ 24
- 当right – left> 5时,执行以下操作
- mid:=((right + left)/ 10)* 5的底部
- fives:= count_fives(mid)
- 如果fives与n相同,则
- right:= mid
- left:= right – 5
- 从循环中出来
- 否则,当fives
- left:= mid
- 否则,
- right:= mid
-
返回right
示例
让我们查看以下实现,以获得更好的理解−
def count_fives(n):
cnt = 0
while n > 0:
n = n // 5
cnt += n
return cnt
def solve(n):
left = 1
right = 5**24
while right - left > 5:
mid = int((right + left) / 10) * 5
fives = count_fives(mid)
if fives == n:
right = mid
left = right - 5
break
elif fives < n:
left = mid
else:
right = mid
return right
n = 2
print(solve(n))
输入
2
输出
10