cd[n_,k_]:=如果[可除[n,k],1,0]
腿[n_,len_]:=模块[{tL=Map[天花板[(n+1)/#-(#+1)/2]&,范围[len]]},tL-Append[静止[tL],0]]
a237048[n_,len_]:=映射[If[OddQ[#],cd[n,#],cd[n-#/2,#]]&,范围[len]]
宽度[n_,len_]:=拖放[FoldList[Plus,0,Map[(-1)^(#+1)&,范围[len]]a237048[n,len]],1]
区域[n_]:=模块[{r=地板[(Sqrt[8n+1]-1)/2],wL,wM,diag,sL,sLs,regs,lens},wL=宽度[n,r];wM=最大值[wL];diag=最后[wL];sL=支腿[n,r]wL;sLs=拆分依据[sL,#!=0&];regs=选择[Map[Fold[Plus,0,#]&,sLs],#=0&]; lens=长度[regs];如果[diag==0,{wM,Join[regs,Reverse[regs]]},{wM,Join[Most[regs],{2Last[regs]-diag},Reverse[Most[regs]]}]]
a338534[n_,b_]:=模块[{k,r,len,s,list=表[0,b]},对于[k=1,k<=n,k++,r=最后的[区域[k]];len=长度[r];s=取[r,楼层[(len+1)/2]];如果[AllTrue[Most[s]-Rest[s],#>0&]&&list[[len]]==0,list[[len]]=k]];列表]
取[a338534[750000,20],16](*序列数据*)