​Xor Transformation​


from 2020ICPC济南
Time limit:1s
Memory limit:256MB

Xor Transformation | 2020ICPC济南G_c代码


这个题目一点思绪没有直到看到了“北航☆苍响”的代码,这里就简单说一下我的理解吧。

假如有两个数x和y
令z = x ^ y
那么在xyz中任意两个数的异或等于剩余的一个(x ^ y = z,x ^ z = y,y ^ z = x)
我们可以看一下z,如果z < x,那么可以直接选择一个数z,使得x ^ z = y
否则z > x,那么先将x ^ y = z,再将z ^ x = y,也只需要选择两个数。
ac代码:
#include<bits/stdc++.h>
using namespace std;
#define
int x,y,z;
signed main(){
cin>>x>>y;
z = x ^ y;
if(z < x)
cout<<1<<"\n"<<z;
else
cout<<2<<"\n"<<y<<" "<<x;
return 0;
}