根据题目的特点,用异或来解决。下面的两个异或知识一定要。
X^X = 0;
X^0 = X;
但是lz还是昏了头啊,绕了个弯,下面是代码
居然用set把数据保存起来,然后拿结果(这本来就是输出结果了啊)和输入的数据一个一个异或,等于0的就是那个数,注释掉的是绕了弯的代码。
这两个代码都提交了,运行时间相差不是很大。运行时间、运行内存分别是578MS、228K和734MS、248K。
#include<cstdio>
//#include<set>
using namespace std;
int main()
{
int T, num, sum;
//set<int> arrset;
while(scanf("%d", &T) && T)
{
sum=0;
for(int i=0; i<T; ++i)
{
scanf("%d", &num);
sum ^= num;
//arrset.insert(num);
}
printf("%d\n", sum);
/*
for(set<int>::iterator iter= arrset.begin(); iter!=arrset.end(); ++iter)
{
if(0==(int)(sum^(*iter)))
{
printf("%d\n", *iter);
break;
}
}
*/
}
return 0;
}