\\主要功能是列表(vec)。\\输入是指数k的向量。\\输出是相应分区的向量。\\这里计算b4(k)时不需要递归。\\因此,当您需要计算几个分区时,这个程序是很好的。\\尤其是当k较大时。b1(n)={my(A=1,B,v1);v1=[1];直到(v1[A]>n,v1=concat(v1,0);B=1;而(二项式(B+1,2)-二项式,v1[A+1]+=(-1)^((B-1)\2)*v1[A-二项式(B+1,2)+二项式;B++);A++);A-1}列表(vec)={my(b2(n)=my(v1);v1=矢量(n,i,矢量(i\2+1,j,i==1));对于(i=2,n,v1[i][i\2+1]=1;v1[i][1]=vecsum(v1[i-1]);对于(j=2,i\2,v1[i][j]=v1[i-1][j-1]-如果((i-j)>=2*(j-1),v1[i-j][j-1));对于(i=2,n,对于步骤(j=i\2,1,-1,v1[i][j]+=v1[i][j+1]));v1,vv1=b2(b1(vecmax(vec))),b3(n)=我的(A=0);直到(vv1[A][1]>n,A++);A-1、,b4(n)=我的(A=b3(n),n=如果(n==vv1[A][1],n,vv1[C][1]+vv1[1][1]-n),B=n-vv1[A][1],C,v1);v1=[];而(!(B==0),C=1;直到(vv1[A+1][C]<=B,C++);v1=连接(v1,C-1);n-=vv1[A][1]-vv1[C+1][1]+vv1[A+1][C];A=b3(n);B=n-vv1[A][1]);v1=Vecrev(v1);v1=连接(A+(#v1>0),v1));vec=向量(#vec,i,b4(vec[i]))}