https://codeforces.com/contest/1325/problem/D
菜不成声.jpg
写了个假做法还觉得巨对,一直wa18,这题关键是想到异或和和加法和奇偶性相同,那么最多3个就能解决,u,(v-u)/2,(v-u)/2
然后2个的情况就是,如果u和(v-u)/2二进制没有一位是相同的,那么(v-u)/2可以合并进入u,
1个的情况就是1个,再写写别的特殊情况
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxl=64;
ll u,v,a,b,c,d;
int main()
{
scanf("%lld%lld",&u,&v);
if(u>v || (v-u)%2!=0)
return 0*puts("-1");
if(u==v && u==0)
return 0*puts("0");
if(u==v)
return 0*puts("1")*printf("%lld",u);
d=v-u;
b=d/2;a=u^b;
if(a+b==v)
return 0*puts("2")*printf("%lld %lld",a,b);
puts("3");
printf("%lld %lld %lld",u,d/2,d/2);
return 0;
}