#include<cstdio>
#include<bitset>
#include<vector>
using namespace std;
const int MAX_N = 50002;
vector<bitset<MAX_N>> bitsets;
int main() {
int n, m, q, op_type, op_arg_1, op_arg_2, q_idx, q_el;
scanf("%d%d%d", &n, &m, &q);
bitsets.resize(n + m + 1);
for (int i = 1; i <= n ; i++) {
for (int j = i; j <= n; j += i) {
bitsets[i][j] = true;
}
}
for (int i = 1; i <= m; i++) {
scanf("%d", &op_type);
if (op_type == 1) {
scanf("%d%d", &op_arg_1, &op_arg_2);
bitsets[n + i] = bitsets[op_arg_1] | bitsets[op_arg_2];
}
if (op_type == 2) {
scanf("%d%d", &op_arg_1, &op_arg_2);
bitsets[n + i] = bitsets[op_arg_1] & bitsets[op_arg_2];
}
if (op_type == 3) {
scanf("%d", &op_arg_1);
bitsets[n + i] = bitsets[op_arg_1];
bitsets[n + i].flip();
}
}
for (int i = 0; i < q; i++) {
scanf("%d%d", &q_idx, &q_el);
if (bitsets[q_idx][q_el]) {
printf("TAK\n");
} else {
printf("NIE\n");
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include<cstdio> #include<bitset> #include<vector> using namespace std; const int MAX_N = 50002; vector<bitset<MAX_N>> bitsets; int main() { int n, m, q, op_type, op_arg_1, op_arg_2, q_idx, q_el; scanf("%d%d%d", &n, &m, &q); bitsets.resize(n + m + 1); for (int i = 1; i <= n ; i++) { for (int j = i; j <= n; j += i) { bitsets[i][j] = true; } } for (int i = 1; i <= m; i++) { scanf("%d", &op_type); if (op_type == 1) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] | bitsets[op_arg_2]; } if (op_type == 2) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] & bitsets[op_arg_2]; } if (op_type == 3) { scanf("%d", &op_arg_1); bitsets[n + i] = bitsets[op_arg_1]; bitsets[n + i].flip(); } } for (int i = 0; i < q; i++) { scanf("%d%d", &q_idx, &q_el); if (bitsets[q_idx][q_el]) { printf("TAK\n"); } else { printf("NIE\n"); } } } |
English