python3 <<'EOF' from fractions import Fraction as F bp=[0,1,0,1,1,0,1,0,1] v=[1,0,1,0,0,0,0,0,1] p=[1,0,1,0,0,0,0,0,1] h=[0,2,0,2,0,1,0,1,0] w=[3,3,3,3,4,1,4,5,1] k=[3,3,1,3,3,2,3,2,2] a=[4,1,3,1,1,1,1,1,3] W=F(4519074773641,4500000000000) sn=1 d=[0]*10 s=[0]*10 for j in range(9,0,-1): cnt=sum([bp[j-1],v[j-1],1 if sn==1 else 0]) d[j]=1 if cnt==1 else 0 sj=(sn-(-h[j-1])-(-w[j-1])-(-k[j-1])-(-a[j-1])-(-p[j-1]))%3 s[j]=sj sn=sj print('d',d[1:]) print('s',s[1:]) js=max([j for j in range(1,10) if d[j]==1]) D=sum(j*d[j] for j in range(1,10)) Sr=sum(j*s[j] for j in range(1,10)) Fs=sum(bp) B=sum(j*h[j-1] for j in range(1,10)) C=sum(j*w[j-1] for j in range(1,10)) K=sum(j*k[j-1] for j in range(1,10)) R=sum(j*v[j-1] for j in range(1,10)) P=sum(j*p[j-1] for j in range(1,10)) A=sum(j*a[j-1] for j in range(1,10)) Z=W-(-F(js,100))-(-F(Fs,1000))-(-F(B,1000))-(-F(C,10000))-(-F(K,10000))-(-F(R,1000))-(-F(P,10000))-(-F(AA,10000))-(-F(D,1000))-(-F(Sr,10000)) print('js D Sr F B C K R P A',js,D,Sr,Fs,B,C,K,R,P,AA) print('Z',Z,Z.numerator,Z.denominator,float(Z)) def r3(x): n=x*1000 q=n.numerator//n.denominator if n-q>=F(1,2): q=q-(-1) return F(q,1000) y=r3(Z) ww=y.numerator//y.denominator ff=(y-ww)*1000 print('ROUND',''.join(['-' if y<0 else '',str(abs(ww)),'.',str(ff.numerator//ff.denominator).zfill(3)])) EOF