题解 | Sum of Factorials

Sum of Factorials

https://www.nowcoder.com/practice/42cb1c7f7344466b8cb1710cb12d06b1

def fac(n):
    s = 1
    if n == 0:
        return 1
    for i in range(1, n+1):
        s *= i
    return s
def sum_f(n, f, s, i):
    if s == n:
        return True
    if s > n:
        return False
    for i in range(i, len(f)):
        a = fac(i)
        if a + s > n:
            break
        if sum_f(n,f,a+s,i+1):
            return True
    return False

def solve(n):
    f = []
    for i in range(n):
        a = fac(i)
        if a > n:
            break
        f.append(a)
    if sum_f(n, f, 0, 0):
        return True
    return False

while True:
    try:
        n = int(input())
        if solve(n):
            print("YES")
        else:
            print('NO')
    except:
        break

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务