HDU 2095 find your present (2)

在逻辑学中,逻辑算符 异或(符号为XOREOR)是对两个运算元的一种逻辑析取类型。但与一般的逻辑或不同,异或算符的值为仅当两个运算元中恰有一个的值为真,而另外一个的值为非真[1]。转化为命题,就是:“两者的值不同。”或“有且仅有一个为真。”

两个运算元(命题):A与B的异或一般写成A异或B,或者写成AXORBA \oplus BA \neq B等等。在C语言中,写作A^B。

异或运算A \oplus B真值表如下:

AB
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;
}
posted @ 2011-04-18 02:16  L..  阅读(223)  评论(0编辑  收藏  举报