2020济南ICPC G.Xor Transformation

题意:给了一个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;
}

猜你喜欢

转载自blog.csdn.net/qq_43563669/article/details/112301316