用 Python 编写程序,查找末尾有 n 个 0 的数字 m
pythonserver side programmingprogramming更新于 2026/2/2 1:48:17
假设我们有一个数字 n。我们必须找到最小的数字 m,使得 m 的阶乘至少有 n 个 0。
因此,如果输入为 n = 2,则输出将为 10,因为 10! = 3628800 和 9! = 362880,有 2 个零的最小数字是 10。
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 count_fives() 。这将需要 n
- cnt := 0
- while n > 0,执行
- n := floor of (n / 5)
- cnt := cnt + n
- 返回 cnt
- 从主方法中,执行以下操作 −
- left := 1
- right := 5^24
- while right - left > 5,执行
- mid := floor of ((right + left) / 10) * 5
- fives := count_fives(mid)
- 如果 fives 与 n 相同,则
- right := mid
- left := right - 5
- 退出循环
- 否则当 fives < n 时,则
- 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

