题意:给了一个X和Y,让每次选择一个A(0<=A<X)与X异或,让构造不超过5步使X变成Y,注意X异或后会变化
思路:利用异或的性质 一个数异或自己等于0
所以考虑X ^ X ^ Y =Y
令Z = X ^ Y
如果Z<X 直接一步到位
否则,先X = X ^ Y X变成了Z(Z>X) 然后X ^ Y=Y
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int x,y;cin>>x>>y;
int z=x^y;
if(z<x) cout<<1<<endl<<z<<endl;
else cout<<2<<endl<<y<<" "<<x<<endl;
return 0;
}