用 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

相关文章


有用资源