#include using namespace std; double A[300][300], x[300]; void solveLinear() { int n = 256; for (int i = 0; i < n; i++) { int piv = i; for (int j = i; j < n; j++) if (fabs(A[j][i]) > fabs(A[piv][i])) piv = j; for (int j = 0; j <= n; j++) swap(A[i][j], A[piv][j]); for (int j = i + 1; j <= n; j++) A[i][j] /= A[i][i]; for (int j = 0; j < n; j++) if (i != j) for (int k = i + 1; k <= n; k++) A[j][k] -= A[j][i] * A[i][k]; } } pair > nxt(int state, int len, int score) { for (int i = 0; i < len; i++) { for (int l = len; l >= 3; l--) { if (i + l > len) continue ; int f = 1, t = -1; for (int j = 0; j < l; j++) { int c = state >> (i + j) & 1; if (t == -1) t = c; if (t != c) f = 0; } if (!f) continue ; int x = 0; for (int j = len - 1; j >= 0; j--) if (j - i < 0 || j - i >= l) x = (x << 1) | (state >> j & 1); return nxt(x, len - l, score + l * l); } } return make_pair(state, make_pair(len, score)); } int main() { for (int state = 0; state < 256; state++) { A[state][state] -= 1.0; pair > pr = nxt(state, 8, 0); int L = 8 - pr.second.first; if (L) for (int d = 0; d < (1 << L); d++) { int nxt = (d << (8 - L)) | pr.first; A[state][nxt] += 1.0 / (1 << L); } A[state][256] -= pr.second.second; } solveLinear(); int t; scanf("%d", &t); while (t--) { char s[20]; scanf(" %s", s); int num = 0; for (int i = 7; i >= 0; i--) num = num * 2 + (s[i] - '0'); printf("%.12lf\n", fabs(A[num][256])); } return 0; }