//demo-is自包含#包括“comb/comb-print.h”#包括“bits/print-bin.h”#包括“bits/bitsperlong.h”#包括“fxtio.h”#包括“jjassert.h”#包括“fxttypes.h”#包括“nextarg.h”//%OEIS序列A182372://%周长为n的非负整数的不同集的数目。//参见comb/partition-asc-perim-demo.cc//参见梳/分区分类2-pp-demo.cc//#定义TIMING//取消注释以禁用打印静态内联ulong bit_volume(ulong x,ulong v=0)//位集的体积://求和(k>=0,(k+v)*(b_k!=0)),尤其是//v==0的和(k>=0,k*(b_k!=0))//v==1的和(k>=0,(k+1)*(b_k!=0)//v给出第一位的值。//天真的实施。{ulong r=0;同时(x){如果(x和1UL)r+=v;v+=1;x>>=1;}返回r;}// -------------------------静态内联ulong位参数(ulong x){ulong t=x&(x>>1)&(x<<1);//内部(x)返回x^t;//border_ones(x)}// -------------------------#定义USE_TABLE#如果定义了USE_TABLEtypedef无符号字符TABLE_TYPE;//typedef ulong TABLE_TYPE;静态TABLE_TYPE表[256*BYTES_PER_LONG];无效init_table(ulong v=0){对于(ulong j=0,s=0;j>=8;s+=256;}while(x);返回r;}// -------------------------#endif//USE_TABLE整数main(int argc,char**argv){ulong n=6;NXARG(n,“计算周长n以内的项”);//n+=1;常数v0=0;#如果定义了USE_TABLEinit_table(v0);#endif//USE_TABLEulong*stats=新ulong[n];对于(ulong j=0;jA122129号//常数k=k0<<2;//零件>=2仅==>A000000constulong p=位周长(k);//ulong p=k;#如果定义了USE_TABLEconstulong v=位卷表(p);#其他constulong v=比特体积(p,v0);#结尾如果(v<n)stats[v]+=1;#如果!定义的计时cout<<setw(4)<<k<<“:”;print_bin(“”,k,n+1);//集合(位)print_bin(“”,p,n+1);//周长(位)cout<<setw(4)<<v;//周长(体积)//cout<<setw(4)<<p;//周长(值)//A000000print_bit_set(“”,p);//周长(如设置)cout<<endl;#endif//计时}print_vec(“”,stats,n);cout<<endl;删除[]统计信息;返回0;}// -------------------------/*合同一般条件4.8.0:时间/箱子28arg 1:28==n[计算周长n以内的项]默认值=6[ 2 2 3 4 6 8 11 14 19 24 31 39 50 61 77 94 117 141 173 208 253 302 363 431 516 609 723 850 ]./bin 28 6.87s用户0.00s系统99%cpu总计6.874==>2^28/6.87==39073574每秒时间/垃圾桶35arg 1:35==n[计算周长n以内的项]默认值=6[ 2 2 3 4 6 8 11 14 19 24 31 39 50 61 77 94 117 141 173 208 253 302 363 431 516 609 723 8501003 1174 1379 1607 1878 2181 2537 ]./bin 35 1038.90s用户0.21s系统99%cpu 17:19.34总计使用USE_TABLE:时间/箱子28arg 1:28==n[计算周长n以内的项]默认值=6[ 2 2 3 4 6 8 11 14 19 24 31 39 50 61 77 94 117 141 173 208 253 302 363 431 516 609 723 850 ]./bin 28 1.51s用户0.00s系统99%cpu 1.509总计==>2^28/1.51==177771825每秒*////Emacs公司:///局部变量:///MyRelDir:“演示/序列”///makefile-dir:“../../”///make-target:“1demo DSRC=demo/seq/A182372-demo.cc”///make-target2:“1demo DSRC=demo/seq/A182372-demo.cc DEMOFLAGS=-DTIMING”///结束时间: