#包括“comb/partition-asc-subset-lex.h”#包括“ds/bitarray.h”//#为A111212定义PART_DIST//#如果定义了PART_DIST#包括“comb/partition-dist-asc-subset-lex.h”#结尾#包括“comb/comb-print.h”#包括“fxtio.h”#包括“jjassert.h”#包括“fxttypes.h”#包括“nextarg.h”//%OEIS序列A069999://%n×n矩阵交换子的可能维数。//%也按顺序A111212。//参见seq/A06999-2-demo.cc,用于使用集合卷积进行计算//参见comb/partition-asc-subet-lex-demo.cc//参见comb/partition-dist-asc-subset-lex-demo.cc//#定义TIMING//取消注释以禁用打印类one_term{私人:#如果定义了PART_DISTpartition_dist_asc_subset_lex P;//分区#其他partition_asc_subset_lex P;//分区#结尾位阵列B;//看到的总数ulong*S;//方块查找表ulong*T;//部分平方和公众:显式one_term(ulong n):P(n),B(n*n+1),S(新ulong[n+1)),T(新ulon[n+1]){对于(ulong j=0;j<=n;++j)S[j]=j*j;对于(ulong j=0;j<=n;++j)T[j]=0;}~one_term(){删除[]S;删除[]T;}#如果定义了计时无效sum_sqr()//对于子法顺序,只有最后两部分//与前面的分区不同。{constulong*D=P.数据()-1;//其中D[0]=0constulong m=P.num_parts();贾塞尔特(m>=2);ulong ss=T[m-2];ss+=S[D[m-1]];T[m-1]=ss;ss+=S[D[m]];T[m]=ss;B.set(ss);//P.print(“”);cout<<“==>”<<ss<<endl;}#else//计时无效sum_sqr(){constulong*D=P.数据();constulong m=P.num_parts();P.print(“”);cout<<“==>”;ulong ss=0;对于(ulong j=0;j-->