########################################################## ##Indranil Ghosh编码(indranilg49@gmail.com) # # ###########################################################Python 2.7.11,OEIS序列:A057163从sympy导入下限,二项式,阶乘as f定义正常(n):如果n==0:返回1B=箱(n)[2:]如果n=0其他“0”s=0对于b中的b:如果b=='1'else-1,则s+=1如果s<0:返回False返回s==0定义a080166(n):l=0当n>0时:l+=(-1)**n如果l<0:返回0n=地板(n/2)如果l>0,则返回0,否则返回1定义a030101(n):返回int(bin(n)[2:][::-1],2)定义a014137(n):xrange(n+1)中k的返回和([f(2*k)/((f(k))**2*(k+1))])定义a215406(n):m=地板(长度(箱(n)[2:])/2)A=a030101(n)y=0t=1对于x范围(1,2*m)中的x:u=2*m-xv=m-(x+y+1)/2mn=二项式(u,v)-二项式t+=mn*(1-A%2)y-=(-1)**AA=地板(A/2)返回a014137(m)-t定义a080300(n):返回a080166(n)*a215406(n)定义a070939(n):返回长度(bin(n)[2:])定义下一个子BinTree(N):n=否c=z=0而c<1:z=2*z+n%2c+=(-1)**nn=地板(n/2)返回zdef BinTreeLeftBranch(n):return NextSubBinTree(floor(n/2))def BinTreeRightBranch(n):返回NextSubBinTree(地板(n/(2**(1+a070939(BinTreeLeftBranch)(n))))定义反射BinTreeAux(n):a=反射BinTree2(BinTree左分支(n))b=反射BinTree2(BinTree右分支(n))返回2**(a070939(b)+a070929(a))+b*(2**a070939a(a)def ReflectBinTree2(n):如果n==0,则返回0,否则ReflectBinTreeAux(a030101(n))def ReflectBinTree(n):返回ReflectBinTree2(n)/2打印[a080300(ReflectBinTree(n))for n in xrange(3001)if ok(n)]