(Python)
定义a(n):
R=dict()#每个可达子集的索引为[card(s)-1][s]
对于范围(n)中的i:R[i]=dict()
对于范围(1,n+1)中的i:R[0][(i,)]={i}
reach=设置(i代表范围(1,n+1)中的i),如果n>1,则设置()
对于范围(1,n-1)中的j:
对于范围((j+1)//2)中的i:
对于R[i]中的s1:
对于R[j-1-i]中的s2:
如果设置(s1)&设置(s2)==设置():
s12=元组(已排序(集合(s1)|集合(s2))
如果s12不在R[len(s12)-1]中:
R[长度(s12)-1][s12]=集()
对于R[i][s1]中的a:
对于R[j-1-i][s2]中的b:
允许=[a+b,a*b,a-b,b-a]
如果a=0和b%a==0:允许.append(b//a)
如果是b=0和a%b==0:允许.append(a//b)
R[len(s12)-1][s12].update(允许)
reach.update(允许)
k=1
而k达到:k+=1
返回k
打印([a(n)代表范围(1,6)中的n])#迈克尔·布拉尼基2022年7月29日
|