Python 中的逆阶乘


假设我们有一个数字 a,我们必须找到 n,使得 n 的阶乘 (n!) 与 a 相同。众所周知,阶乘 n = n * (n - 1) * (n - 2) * ... * 1。如果没有这样的整数 n,则返回 -1。

因此,如果输入类似 a = 120,则输出将为 5。

为了解决这个问题,我们将遵循以下步骤 -

  • i := 0,num := 1
  • L:= a 新列表
  • while i < a,执行
    • i := num 的阶乘
    • 将 i 插入到 L 的末尾
    • num := num + 1
  • 如果 a 在 L 中,则
    • 返回 (a 在 L 中的索引) +1
  • 否则,
    • 返回 -1

让我们看看以下实现来获得更好的理解 -

示例

 在线演示

import math
class Solution:
   def solve(self, a):
      i,num=0,1
      L=[]
      while i < a :
         i=math.factorial(num)
         L.append(i)
         num+=1
         if a in L :
            return L.index(a)+1
         else :
            return -1
ob = Solution()
print(ob.solve(120))

输入

120

输出

5

更新于: 2020 年 9 月 23 日

2K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.