#include using namespace std; typedef long long ll; typedef unsigned long long ull; #define _for(i,a,b) for(register int (i)=(a);(i)<=(b);(i)++) #define For(i,a,b) for(register int (i)=(a);(i)>=(b);(i)--) #define INF 0x7fffffff #define il inline #define rg register const int N=515; double a[N][N]; int pr[N],top[N]; #define eps 1e-13 #define id(x,i) (((x)&(1<<(i)))>>(i)) #define ins(x,i,p) x+=((p)<<(i))-(id(x,i)<<(i)); int qwq(){ _for(t,0,255){ int x=t; int sum[2]; sum[0]=sum[1]=0; int tmp=0; a[t][256]=0; top[t]=7; _for(i,0,top[t]){ ++sum[id(x,i)]; sum[id(x,i)^1]=0; if(sum[id(x,i)]==3){ int m=top[t]; tmp=i; while(id(x,tmp)==id(x,i) and tmp<=m) ++tmp; tmp--; for(int k=1;k<=m-tmp;++k) ins(x,i-3+k,id(x,tmp+k)); for(int k=i-tmp+m-2;k<=m;++k) ins(x,k,0); pr[t]=x, top[t]=i-tmp+m-3, a[t][256]-=(m-top[t])*(m-top[t]), i=-1, sum[0]=sum[1]=0; } } } _for(i,0,255){ int sum=0; a[i][i]=-1; if(top[i]!=7){ a[i][i]=0; _for(j,0,255){ int bo=1; _for(k,0,top[i]) if(id(pr[i],k)!=id(j,k)) bo&=0; if(bo){ sum++; a[i][j]+=1.00; } } a[i][i]-=sum, a[i][256]=a[i][256]*sum; } } } const int n=256; void qaq(){ int r=0; int t; _for(c,0,n-1){ t=r; _for(i,r,n-1) if (fabs(a[i][c])>fabs(a[t][c])) t=i; if(fabs(a[t][c])eps) For(m,n,c) a[i][m]-= a[r][m]*a[i][c]; r++; } For(i,n-1,0) _for(m,i+1,n-1) a[i][n]-= a[i][m]*a[m][n]; } int main(){ qwq(), qaq(); rg int q; scanf("%d",&q); _for(i,1,q){ int x=0; _for(j,0,7){ char c=getchar(); while(c!='0' and c!='1') c=getchar(); ins(x,j,c-'0'); } printf("%.12lf\n",a[x][256]); } return 0; }