#include #include #define V_SIZE 3 #define H_SIZE 3 int simulate(int len, int **arr); int max(int a, int b, int c); int min(int a, int b, int c); int isKadomatsu(int a, int b, int c); int main(void) { int t, len, **a, idx, i, j; a = (int**)calloc(sizeof(int*), V_SIZE); for(idx = 0; idx < V_SIZE; idx++) { a[idx] = (int*)calloc(sizeof(int), H_SIZE); } scanf("%d", &t); for(idx = 0; idx < t; idx++) { scanf("%d", &len); for(i = 0; i < V_SIZE; i++) { scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]); } printf("%d\n", simulate(len, a)); } /* for(i = 0; i < V_SIZE; i++) { for(j = 0; j < H_SIZE; j++) { printf("%d ", a[i][j]); } printf("\n"); } */ return 0; } int simulate(int len, int **arr) { int i, j, zero[2][2], cnt=0, ret=0; for(i = 0; i < V_SIZE; i++) { for(j = 0; j < H_SIZE; j++) { if(arr[i][j] == 0) { zero[cnt][0] = i; zero[cnt][1] = j; cnt++; } } } for(i = 1; i < (len-1); i++) { arr[(zero[0][0])][(zero[0][1])] = i; arr[(zero[1][0])][(zero[1][1])] = (len - i); if(isKadomatsu(arr[0][0], arr[1][1], arr[2][2]) && isKadomatsu(arr[0][2], arr[1][1], arr[2][0])) { for(j = 0; j < V_SIZE; j++) { if(isKadomatsu(arr[j][0], arr[j][1], arr[j][2]) && isKadomatsu(arr[0][j], arr[1][j], arr[2][j])) { ret++; } } } } return ret; } int max(int a, int b, int c) { if(a > b) { if(a > c) { return a; } else { return c; } } else { if(b > c) { return b; } else { return c; } } } int min(int a, int b, int c) { if(a > b) { if(b > c) { return c; } else { return b; } } else { if(a > c) { return c; } else { return a; } } } int isKadomatsu(int a, int b, int c) { if (a == b || b == c || c == a) { return 0; } if (max(a, b, c) == b || min(a, b, c) == b) { return 1; } return 0; }