请问我这个代码用取反符号(!)怎么做?

首先是题目要求:

然后是代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x;
    cin >> x;
    if ((x % 2 == 0) && (x > 4 && x < 12))
    {
        cout << "1" << " " << "1" << " " << "0" << " " << "0";
    }else{
        cout << "0" << " ";
        if ((x % 2 == 0) || (x > 4 && x < 12))
        {
            cout << "1" << " " << "1" << " " << "0" << " ";
        }else{
            cout << "0" << " " << "0" << " " << "1";
        }
    }
    return 0;
}

请大家多多出谋划策

你没有考虑到当且仅当其中一个条件成立情况,你只考虑了三种,全部成立,其中一条或两条成立,两条都不成立,还有一种就是当且仅当一条成立。if((a&&!b)||(!a&&b))