(Good Bye 2019) Codeforces 1270C Make Good
题目链接:
Codeforces 1270 C Make Good
思路:
设已有的所有数相加得到x,异或得到y
第一步我们在尾部附加y,现在两个数为x+y和0;
第二步我们在尾部附加x+y,现在两个数为2(x+y)和x+y;
这样就符合题意了~
代码:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
typedef long long ll;
#define fi first
#define sc second
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define pt(a) cerr<<a<<"---\n"
#define rp(i,n) for(int i=0;i<n;i++)
#define rpn(i,n) for(int i=1;i<=n;i++)
int main(){
ios::sync_with_stdio(false); cin.tie(nullptr);
int t; cin>>t;
while(t--){
int n; cin>>n;
ll x=0,y=0;
rp(i,n){
ll a; cin>>a;
x+=a; y^=a;
}
if(x==(y<<1)){
cout<<0<<'\n'<<'\n';
}else{
cout<<2<<'\n'<<y<<' '<<x+y<<'\n';
}
}
return 0;
}