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
广告