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(根据异或的性质)。
上代码:
1 #include<stdio.h> 2 #include<iostream> 3 #include<string.h> 4 using namespace std; 5 int main() 6 { 7 int m,n; 8 int a[200002]; 9 int ans=0; 10 while(~scanf("%d",&n)&&n){ 11 for(int i=0;i<n;i++){ 12 cin>>a[i]; 13 ans^=a[i]; 14 } 15 if(ans==0) 16 cout<<"No"<<endl; 17 else {cout<<"Yes"<<endl; 18 for(int i=0;i<n;i++){ 19 int s=ans^a[i]; 20 if(s<=a[i]) 21 cout<<a[i]<<" "<<s<<endl; 22 } 23 } 24 } 25 }