Python中的逆阶乘

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

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

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

  • i:= 0,num:= 1

  • L:=新列表

  • 当我<一个,做

    • i:=阶乘

    • 在L的末尾插入i

    • 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