#include <stdio.h>
#define U_SIZE 11 // універсум 1..10
void printSet(int S[]) {
for (int i = 1; i <= 10; i++)
}
void complement(int S[], int R[]) {
for (int i = 1; i <= 10; i++)
R[i] = !S[i];
}
void intersect(int A[], int B[], int R[]) {
for (int i = 1; i <= 10; i++)
R[i] = A[i] && B[i];
}
void diff(int A[], int B[], int R[]) {
for (int i = 1; i <= 10; i++)
R[i] = A[i] && !B[i];
}
int main() {
int A[U_SIZE] = {0}, B[U_SIZE] = {0}, C[U_SIZE] = {0};
int Ap[U_SIZE], Bp[U_SIZE], ApC[U_SIZE], result[U_SIZE];
int a_vals[] = {1,2,3,5,6};
int b_vals[] = {2,3,4,8,9};
int c_vals[] = {3,4,5};
for (int i=0;i<5;i++) A[a_vals[i]] = 1;
for (int i=0;i<5;i++) B[b_vals[i]] = 1;
for (int i=0;i<3;i++) C[c_vals[i]] = 1;
// Доповнення
complement(A, Ap);
complement(B, Bp);
// A' ∩ C
intersect(Ap, C, ApC);
// B' \ (A' ∩ C)
diff(Bp, ApC, result);
printSet(Bp);
printSet(Ap);
printSet(ApC);
printSet(result);
// Підрахунок потужності булеану (2^n)
int n = 0;
for (int i = 1; i <= 10; i++)
if (result[i]) n++;
long long power = 1LL << n;
printf("Потужність булеану = %lld\n", power
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFVfU0laRSAxMSAgIC8vINGD0L3RltCy0LXRgNGB0YPQvCAxLi4xMAoKdm9pZCBwcmludFNldChpbnQgU1tdKSB7CiAgICBwcmludGYoInsgIik7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSAxMDsgaSsrKQogICAgICAgIGlmIChTW2ldKSBwcmludGYoIiVkICIsIGkpOwogICAgcHJpbnRmKCJ9XG4iKTsKfQoKdm9pZCBjb21wbGVtZW50KGludCBTW10sIGludCBSW10pIHsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDEwOyBpKyspCiAgICAgICAgUltpXSA9ICFTW2ldOwp9Cgp2b2lkIGludGVyc2VjdChpbnQgQVtdLCBpbnQgQltdLCBpbnQgUltdKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSAxMDsgaSsrKQogICAgICAgIFJbaV0gPSBBW2ldICYmIEJbaV07Cn0KCnZvaWQgZGlmZihpbnQgQVtdLCBpbnQgQltdLCBpbnQgUltdKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSAxMDsgaSsrKQogICAgICAgIFJbaV0gPSBBW2ldICYmICFCW2ldOwp9CgppbnQgbWFpbigpIHsKCiAgICBpbnQgQVtVX1NJWkVdID0gezB9LCBCW1VfU0laRV0gPSB7MH0sIENbVV9TSVpFXSA9IHswfTsKICAgIGludCBBcFtVX1NJWkVdLCBCcFtVX1NJWkVdLCBBcENbVV9TSVpFXSwgcmVzdWx0W1VfU0laRV07CgogICAgaW50IGFfdmFsc1tdID0gezEsMiwzLDUsNn07CiAgICBpbnQgYl92YWxzW10gPSB7MiwzLDQsOCw5fTsKICAgIGludCBjX3ZhbHNbXSA9IHszLDQsNX07CgogICAgZm9yIChpbnQgaT0wO2k8NTtpKyspIEFbYV92YWxzW2ldXSA9IDE7CiAgICBmb3IgKGludCBpPTA7aTw1O2krKykgQltiX3ZhbHNbaV1dID0gMTsKICAgIGZvciAoaW50IGk9MDtpPDM7aSsrKSBDW2NfdmFsc1tpXV0gPSAxOwoKICAgIC8vINCU0L7Qv9C+0LLQvdC10L3QvdGPCiAgICBjb21wbGVtZW50KEEsIEFwKTsKICAgIGNvbXBsZW1lbnQoQiwgQnApOwoKICAgIC8vIEEnIOKIqSBDCiAgICBpbnRlcnNlY3QoQXAsIEMsIEFwQyk7CgogICAgLy8gQicgXCAoQScg4oipIEMpCiAgICBkaWZmKEJwLCBBcEMsIHJlc3VsdCk7CgogICAgcHJpbnRmKCJCJyA9ICIpOwogICAgcHJpbnRTZXQoQnApOwoKICAgIHByaW50ZigiQScgPSAiKTsKICAgIHByaW50U2V0KEFwKTsKCiAgICBwcmludGYoIkEnIOKIqSBDID0gIik7CiAgICBwcmludFNldChBcEMpOwoKICAgIHByaW50ZigiQicgXFwgKEEnIOKIqSBDKSA9ICIpOwogICAgcHJpbnRTZXQocmVzdWx0KTsKCiAgICAvLyDQn9GW0LTRgNCw0YXRg9C90L7QuiDQv9C+0YLRg9C20L3QvtGB0YLRliDQsdGD0LvQtdCw0L3RgyAoMl5uKQogICAgaW50IG4gPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKykKICAgICAgICBpZiAocmVzdWx0W2ldKSBuKys7CgogICAgbG9uZyBsb25nIHBvd2VyID0gMUxMIDw8IG47CgogICAgcHJpbnRmKCLQn9C+0YLRg9C20L3RltGB0YLRjCDQsdGD0LvQtdCw0L3RgyA9ICVsbGRcbiIsIHBvd2VyKTsKCiAgICByZXR1cm4gMDsKfQo=