/* -*- coding: utf-8 -*- * * 792.cc: No.792 真理関数をつくろう - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 12; const int NBITS = 1 << MAX_N; /* typedef */ /* global variables */ int qs[NBITS][MAX_N], rs[NBITS]; /* subroutines */ /* main */ int main() { int n; scanf("%d", &n); int nbits = 1 << n; int ro = 0, ra = 1; for (int i = 0; i < nbits; i++) { for (int j = 0; j < n; j++) scanf("%d", &qs[i][j]); scanf("%d", rs + i); ro |= rs[i]; ra &= rs[i]; //printf("rs[%d]=%d\n", i, rs[i]); } //printf("ro=%d, ra=%d\n", ro, ra); if (ro == 0) puts("A=⊥"); else if (ra == 1) puts("A=⊤"); else { printf("A="); for (int i = 0, cont = 0; i < nbits; i++) if (rs[i]) { if (cont) printf("∨"); cont = 1; putchar('('); for (int j = 0; j < n; j++) { if (j) printf("∧"); if (! qs[i][j]) printf("¬"); printf("P_%d", j + 1); } putchar(')'); } putchar('\n'); } return 0; }