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.