找球号(三)
时间限制:2000 ms | 内存限制:3000 KB
难度:2
描述
xiaod现在正在某个球场负责网球的管理工作。为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是偶数。有一天,xiaod发现少了一个球,你能帮他找出丢的那个球的球号吗?
输入
有多组测试数据。每组数据包括两行。
第一行是一个整数N(0
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,i;
while(~scanf("%d",&n))
{
int k=0,m;
for(i=0; i<n; i++)
{
scanf("%d",&m);
k^=m;
}
printf("%d
",k);
}
return 0;
}
这题主要用到了位运算的一个小的技巧,也就是假设一个数k ,k ^A^A = k 也就是说,k与偶数个其他数字按位异或运算之后,还是本身。那么,可以利用这个特点,直接解决这个问题
异或运算符的特点是:数a两次异或同一个数b仍然为原值a ,即a=a^b^b.