题解 | #或与异或#

或与异或

https://ac.nowcoder.com/acm/problem/235688

只需要判断目标数字是否由 “0 1”、“1 0” 和 “1 1” 这三种位置的集合组成即可。
证明(图片中给出证明,此处无法读取请点击:https://blog.nowcoder.net/n/2841f568ef4a478f84d3368ace8d4bd8):

代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long 

int main() {
    int ttx;  cin >> ttx;  while(ttx --) {
        ll a, b, c;
        cin >> a >> b >> c;
        ll x, y, z;
        x = a & b, y = (~a) & b, z = a & (~b);
        if(!(x & (~c))) c &= ~x;
        if(!(y & (~c))) c &= ~y;
        if(!(z & (~c))) c &= ~z;
        if(c) cout << "NO" << endl;
        else cout << "YES" << endl;
    }
    return 0;
}


全部评论

相关推荐

03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
头像
03-20 22:00
重庆大学 Java
适彼乐土:“他们不行再找你” 最后的底牌吗?有点意思
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务