在Python中查找具有n个末尾0的数字m的程序

在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程