整体来说,这个题很简单的,给我们n个数,找出这n个数里哪个数的个数是奇数
我第一想法就是桶
事实证明我的想法是对的
#include<iostream>
#include<cstdio>
using namespace std;
long long n,a[10000000],x;//这里数组要定义的大一些
int main()
{
scanf("%lld",&n);//不用scanf的话会时间超限的
for(int i=0;i<n;i++)
{
scanf("%lld",&x);
a[x-1]+=1;//把数存到桶里
}
for(int i=0;i<=1000001;i++)
{
if(a[i]%2==1)//判断哪个是奇数
{
printf("%lld",i+1);//找到了就输出
return 0;//因为不可能有第二个奇数、所以就直接结束
}
}
return 0;
}
后来我发现有用异或的
那是一个好东西
#include<iostream> #include<cstdio> using namespace std; int x,n,a; int main() { scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a); x^=a;//一行就顶了我的好几行(;´д`)ゞ } cout<<x<<endl; return 0; }
^异或符号
0^0=0,0^1=1 0异或任何数=任何数
1^0=1,1^1=0 1异或任何数-任何数取反
这个比我打的桶好了千万倍不止,不过我也学到了新知识