toruns(n)={my(r=[]);while(n,my(v=估值(n+n%2,2));n\=2^v;r=concat(v,r));r}fromruns(r)={my(v=0);for(k=1,#r,v=(v+k%2)*2^r[k]-k%2);v}rev(n)=来自运行(Vecrev(toruns(n)))vv=[0]nb=0bin(n)=来自数字(二进制(n))探索(v,z,o)={如果(z==o,如果(nb++>#vv,vv=连接(vv,向量(#vv)););vv[nb]=v;);如果(z-1>=o&v,探索(2*v+0,z-1,o););如果(o,探索(2*v+1,z,o-1););}探索(0,W=9,W)vv=设置(vv[1..nb])对于(n=1,#vv,打印(n-1“”集合搜索(vv,rev(vv[n]))-1)退出