#包括“comb/partition-dist-d-asc.h”#包括“comb/partition-hook-prod.h”//演示包括“comb/partition-conj.h”#包括“aux0/factorial.h”#包括“fxtio.h”#包括“jjassert.h”#包括“fxttypes.h”#包括“nextarg.h”#包括“jjassert.h”//%OEIS序列A218293://%标准的Young tableaux,其形状与分成不同部分的分区相对应。//%也是OEIS序列//%A000085(所有表格,d=0),//%A225121(用于划分为具有最小差异2的不同部分的表2,d=0),//参见seq/A003040-demo.cc//对于部件差异至少为d的分区,请参阅comb/partition-dist-d-asc-demo.cc//对于(所有)分区,请参阅comb/partition-asc-demo.cc//#定义TIMING//取消注释以禁用打印#包括“bits/bitsperlong.h”typedefulong类型;//typedef__uint128_t类型;//如果可用静态空隙(x型){如果(x==0){cout<<0;return;}常数m=~0UL;ulong s=尺寸(类型)/尺寸(ulong)*BITS_PER_LONG;s-=位_位_长;而(0==(m&(x>>s))s-=比特_珀尔_龙;ulong r=m&(x>>s);cout<<r;同时{s-=位_位_长;r=m&(x>>s);cout<<setfill('0')<<setw(2*BYTES_PER_LONG)<<r;}cout<<setfill(“”);}// -------------------------整数main(int argc,char**argv){ulong n=12;NXARG(n,“整数分区n(对于32位系统,n<=12,否则n<=20)”);ulong d=1;NXARG(d,“零件最小差异”);partition_dist_d_asc P(n,d);ulong ct=0;ulong*B=新ulong[n];const类型nf=阶乘(n);类型tbct=0;ulong m=P.num_parts();{++ct;键入hp=partition_asc_hook_prod(P.数据(),m,B);常量类型t=nf/hp;tbct+=t;#如果!定义的计时cout<<setw(3)<<ct<<“:”;//cout<<“[”<<setw(2)<<m<<“]”;P.print(“”);cout<<“#=”;输出(t);cout<<endl;#endif//计时贾塞尔特(P.OK());jjassert(nf%hp==0);//如果n太大,则由溢出引起}而((m=P.next()));cout<<“ct=”<<ct<<endl;cout<<“tbct=”;输出(tbct);cout<<endl;删除[]B;返回0;}// -------------------------/*s=1;echo$(用于$中的n(seq 0 20);这样做/bin$n$s;done|grep tbct=)|sed的/tbct=/,/g;'*//*A003040:n次对称群S_n的不可约表示的最高次n单位为美元(序列113);这样做/bin$n 0|cut-s-d\#-f2|cut-d=-f2|sort-g|tail-1;完成*////Emacs公司:///局部变量:///MyRelDir:“演示/序列”///makefile-dir:“../../”///make-target:“1demo DSRC=demo/seq/A218293-demo.cc”///make-target2:“1demo DSRC=demo/seq/A218293-demo.cc DEMOFLAGS=-DTIMING”///完: