50分求助
查看原帖
50分求助
533856
NuclearBomb楼主2021/8/20 19:43

我觉得一点问题都没有啊

nm=int(input())
list1=[0 for x in range(nm)]
shuz=[]
dic={}
dic2={}
for x in reversed(range(nm)):    
    num=0
    for y in reversed(range(1,x)):
        if x%y==0:
            if y in dic2.keys():
                num+=dic2[y]
                break
            num+=y
    dic2[x]=num
    list1[x]=num
def sb(xb,rl):
    if (xb,rl) in dic.keys():
        return dic[(xb,rl)]
    if xb<0:
        return 0
    if xb>rl:
        return sb(xb-1,rl)
    k=max(sb(xb-1,rl),sb(xb-1,rl-xb)+list1[xb])
    dic[(xb,rl)]=k
    return k
print(sb(nm-1,nm))

2021/8/20 19:43
加载中...