Python程式檢查數字能否寫成不同階乘數之和


假設我們有一個正數n,我們需要檢查n是否可以寫成唯一正整數階乘的和。

因此,如果輸入類似於n = 144,則輸出將為True,因為4! + 5! = 24 + 120 = 144

為了解決這個問題,我們將遵循以下步驟:

  • fact := 1

  • res := 新列表

  • x := 2

  • 當fact <= n時,執行以下操作:

    • 將fact插入到res的末尾

    • fact := fact * x

    • x := x + 1

  • 對於res大小從-1到0的i,遞減1,執行以下操作:

    • 如果n >= res[i],則

      • n := n - res[i]

  • 當n等於0時返回true

讓我們看看下面的實現,以便更好地理解:

示例

即時演示

class Solution:
def solve(self, n):
   fact = 1
   res = []
   x = 2
   while fact <= n:
      res.append(fact)
      fact = fact * x
      x += 1
   for i in range(len(res)-1,-1,-1):
      if n>=res[i]:
         n-=res[i]
   return n==0
ob = Solution()
print(ob.solve(144))

輸入

144

輸出

True

更新於: 2020年10月8日

172 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.