HDU2176 http://acm.hdu.edu.cn/showproblem.php?pid=2176
假设有3个数,a[0],a[1],a[2];那么ans=a[0]^a[1]^a[2];若ans^a[0]=s;
那么a[1]^a[2]^s=a[1]^a[2]^ans^a[0]=a[1]^a[2]^a[0]^a[1]^a[2]^a[0]=0(根据异或的性质)。
上代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int m,n;
int a[];
int ans=;
while(~scanf("%d",&n)&&n){
for(int i=;i<n;i++){
cin>>a[i];
ans^=a[i];
}
if(ans==)
cout<<"No"<<endl;
else {cout<<"Yes"<<endl;
for(int i=;i<n;i++){
int s=ans^a[i];
if(s<=a[i])
cout<<a[i]<<" "<<s<<endl;
}
}
}
}