[异或]^
异或:^(xor) 相同为0,不同为1
特点:
0任何数=任何数;1任何数=(奇数减一,偶数加一?)
应用 交换
int swap(int x,int y){
x=^y;y=^x;x=^y;
}
应用 特定位置位翻转
与特定位的1取异或
应用 查找“单身狗”(判断两个数是否相等)
int main(){
//输入数组
int a[100];
int k;cin>>k;
for(int i=0;i<k;i++){
cin>>a[i];
}
//单个狗2n+1
int y=0;
for(int j=0;j<k;j++){
y=y^*(a+j);
}
cout<<y<<endl;
//两个狗2n+2
int z=1;
while(z%2==0){
z++;
y>>1;
}
int A=0 ,B=0;
for(int p=0;p<k;p++){
if((*(a+p)>>(z-1))%2==0)A=A^*(a+p);
else B=B^*(a+p);
}
cout<<A<<" "<<B<<endl;
return 0;
}