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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告