专栏文章

题解:CF2153B Bitwise Reversion

CF2153B题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mindo5op
此快照首次捕获于
2025/12/02 00:42
3 个月前
此快照最后确认于
2025/12/02 00:42
3 个月前
查看原文
温馨提示:本题无法评测。
对于&运算,其实就是二进制下的两个数的一中位运算。每一位全 1111,否则为 00
本人第一直觉,先把 x,y,zx,y,z 每个&运算的结果写出来,显然:
x&y=a&b&b&cx\&y=a\&b\&b\&c
x&z=a&a&b&cx\&z=a\&a\&b\&c
y&z=a&b&c&cy\&z=a\&b\&c\&c
问题就变为:如何从上面几个表达式中求出原题有解或无解。其实也就是变为一道构造题。
那么,设 xx 的第 ii 位为 xix_i,其余同理。那么,根据&运算法则:
xi=1x_i=1ai=1,bi=1a_i=1,b_i=1
yi=1y_i=1bi=1,ci=1b_i=1,c_i=1
zi=1z_i=1ai=1,ci=1a_i=1,c_i=1
根据结果可得,若 xi=1,yi=1x_i=1,y_i=1ai=1,bi=1,ci=1,zi=1a_i=1,b_i=1,c_i=1,z_i=1,其余同理。
则推出结论:若 xi,yi,zix_i,y_i,z_i 其中至少两个为 11,则 xi,yi,zi,ai,bi,cix_i,y_i,z_i,a_i,b_i,c_i 全为 11
那么,很显然,若 x=0,y=0,z=0x=0,y=0,z=0 原题有解。
则在原题有解情况下,x&y=x&z=y&zx\&y=x\&z=y\&z
证明:
因为 xi=1,yi=1x_i=1,y_i=1xi=1,zi=1x_i=1,z_i=1yi=1,zi=1y_i=1,z_i=1xi,yi,zi,ai,bi,cix_i,y_i,z_i,a_i,b_i,c_i 全为 11
所以若 xi&yi,xi&zi,yi&zix_i\&y_i,x_i\&z_i,y_i\&z_i 其中至少一个不为 00,则上述三个表达式全都不为 00
所以若 x&y=y&z=x&zx\&y=y\&z=x\&z,原题有解。
证毕。

code

CPP
#include<bits/stdc++.h>
using namespace std;
int main(  )
{
    int t;
    cin>>t;
    while(t--)
    {
        int x,y,z;
        cin>>x>>y>>z;
        if((x&y)==(y&z)&&(x&z)==(y&z)) cout<<"yEs\n";
        else cout<<"No\n";
    }
    return 0;
}
感谢观看。

评论

0 条评论,欢迎与作者交流。

正在加载评论...