题意:
输入一个奇数n(0
示例输入:
5
1 1 3 2 2
3
1 2 1
0
示例输出:
3
2
解决方案(1):
使用排序,将这个n个数进行升序排序,这样使相同的数两两排列在一起,只有那一个答案打单身。就是可以找出这个答案
#include<cstdio>
#include<algorithm>
using namespace std;
int arr[1000000];
int main()
{
int n,i,j;
scanf("%d",&n);
while(n>0)
{
for (i = 0; i < n; ++i)
{
scanf("%d",arr+i);
}
sort(arr,arr+n);
for (i = 0; i < n; i += 2)
{
if (arr[i] != arr[i + 1] || i == n - 1)
break;
}
printf("%d\n",arr[i]);
scanf("%d",&n);
}
}
解决方案(2):
利用数论知识:a^b^a=b,答案与n-1个数异或就是可以找出最终答案
#include<iostream>
using namespace std;
int main()
{
int n,answer,a;
while(cin>>n,n)
{
answer=0;
while(n--)
{
cin>>a;
answer^=a;
}
cout<<answer<<endl;
}
}