#包括“comb/composition-nz-prefix-cond.h”#包括“aux0/gcd.h”#包括“comb/comb-print.h”#包括“fxtio.h”#包括“jjassert.h”#包括“fxttypes.h”#包括“nextarg.h”//%OEIS序列A000793://%朗道函数g(n):n个元素排列的最大阶数。//%等价地,n的(部分)分区的最大lcm。//%也按顺序A213206。//抄送:comb/composition-nz-prefix-cond-demo.cc//#定义TIMING//取消注释以禁用打印布尔cond_all(constulong*a,ulong k)//==>A000793:朗道函数g(n);n个元素的最大排列顺序。//等效地,n个分区的最大lcm。{如果(k==0)返回true;如果(a[k]<a[k-1])返回false;返回true;}// -------------------------布尔cond_no2(constulong*a,ulong k)//==>A213206{如果(a[k]==2)返回false;如果(k==0)返回true;如果(a[k]<a[k-1])返回false;返回true;}// -------------------------ulong n=7;布尔cond_non(常数a,ulong k){如果(a[k]==n)返回false;如果(k==0)返回true;如果(a[k]<a[k-1])返回false;返回true;}// -------------------------整数main(int argc,char**argv){NXARG(n,“n的分区(n>=1)”);ulong c=0;NXARG(c,“条件函数:”“\n 0==>所有分区,”“\n 1==>无部件=n”“\n 2==>无部件=2”);合成_nz_prefix_cond P(n);开关(c){案例0:P.first(cond_all);断裂;案例1:P.first(cond_no_n);断裂;情况2:P.first(cond_no2);断裂;默认值:cout<<“无效条件!”<<endl;返回1;}ulong ct=0;ulong r=1;//迄今为止的最大订单const ulong*x=P.数据();同时(P.valid()){ulong m=P.num_parts();#如果!定义的计时++ct;#如果为0cout<<“[”<<setw(2)<<ct<<“]”;//OEIS示例的格式#其他cout<<setw(4)<<ct<<“:”;cout<<“[”<<setw(2)<<m<<“]”;#结尾P.print(“”);//贾塞尔特(P.OK());#endif//计时ulong t=1;对于(ulong j=0;jr)r=t;#如果!定义的计时cout<<“”<<t;cout<<endl;#endif//计时P.下一步();}cout<<“ct=”<<ct<<endl;cout<<“r=”<<r<<endl;返回0;}// -------------------------//echo$(表示$中的n(序列120);这样做/bin$n 0;done|grep r=)|sed的/r=/,/g;'///Emacs公司:///局部变量:///MyRelDir:“演示/序列”///makefile-dir:“../../”///make-target:“1demo DSRC=demo/seq/A00793-demo.cc”///make-target2:“1demo DSRC=demo/seq/A00793-demo.cc DEMOFLAGS=-DTIMING”///结束时间: