HDU 2095 find your present (2)
在逻辑学中,逻辑算符 异或(符号为XOR或EOR或⊕)是对两个运算元的一种逻辑析取类型。但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真[1]。转化为命题,就是:“两者的值不同。”或“有且仅有一个为真。”
两个运算元(命题):A与B的异或一般写成A异或B,或者写成AXORB、、
等等。在C语言中,写作A^B。
异或运算的真值表如下:
A | B | ⊕ |
---|---|---|
F | F | F |
F | T | T |
T | F | T |
T | T | F |
n是奇数,有一个数出现一次,其它数都是偶次。有因为数据量太大,所以用亦或。
亦或满足交换律,相同的两个数亦或为0,任何数和0亦或为其本身。
#include <stdio.h>
int main(){
int ans,n,m;
while(scanf("%d",&n) == 1,n){
ans = 0;
for(int i = 0; i < n; ++i){
scanf("%d",&m);
ans ^= m;
}
printf("%d\n",ans);
}
return 0;
}