检查数字的程序可以写为不同阶乘数的总和,也可以不在Python中写

假设我们有一个正数n,我们必须检查n是否可以写成唯一的正阶乘数之和。

因此,如果输入像n = 144,那么输出将为True,为4!+ 5!= 24 + 120 = 144

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

  • 事实:= 1

  • res:=一个新列表

  • x:= 2

  • 而事实<= n,

    • 在res的末尾插入事实

    • 事实:=事实* x

    • x:= x + 1

  • 对于范围-1到0的i,将i减小1,

    • n:= n-res [i]

    • 如果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
猜你喜欢