#include <cstdio>
#include <bitset>
using namespace std;
int main()
{
int n, m, q;
scanf("%d %d %d", &n, &m, &q);
bitset<50001>* A; A = new bitset<50001>[450001];
for(int i =1; i<=n;i++)
{
for(int j =1; j*i<=n; j++)
{
A[i].set(j*i);
}
}
for(int i =1; i<=m;i++)
{
int op, x, y;
scanf("%d %d", &op,&x);
if(op == 1)
{
scanf("%d", &y);
A[n+i] = A[x] | A[y];
} else if(op == 2)
{
scanf("%d", &y);
A[n+i] = A[x] & A[y];
} else if(op == 3)
{
A[n+i] = ~A[x];
}
}
for(int i =1; i<=q;i++)
{
int a, b;
scanf("%d %d", &a,&b);
printf(A[a].test(b)?"TAK\n":"NIE\n");
}
return 0;
}
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 46 47 48 49 50 51 | #include <cstdio> #include <bitset> using namespace std; int main() { int n, m, q; scanf("%d %d %d", &n, &m, &q); bitset<50001>* A; A = new bitset<50001>[450001]; for(int i =1; i<=n;i++) { for(int j =1; j*i<=n; j++) { A[i].set(j*i); } } for(int i =1; i<=m;i++) { int op, x, y; scanf("%d %d", &op,&x); if(op == 1) { scanf("%d", &y); A[n+i] = A[x] | A[y]; } else if(op == 2) { scanf("%d", &y); A[n+i] = A[x] & A[y]; } else if(op == 3) { A[n+i] = ~A[x]; } } for(int i =1; i<=q;i++) { int a, b; scanf("%d %d", &a,&b); printf(A[a].test(b)?"TAK\n":"NIE\n"); } return 0; } |
English