題意:給出一組學號,找到奇數次出現的(只有一個)然後輸出
用map超時了,如果有哪位大佬會的話求講解
在一次打開新世界大門,用異或^
但是這種只適用於在longlong之內的數字,且只出現一組奇數,其餘全是偶數的情況
已知 a^a=0; a^a^a=a也就是說,偶數次異或是0,奇數次亦或是它本身,多麼美妙啊
正巧,其他出現的數都是偶數次,也就是:a^a^a^b^b=a;
所以只用設置一個ans=0然後一直異或下去輸出就好了
代碼:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n,t,a;
scanf("%d",&t);
while(t--)
{int ans=0;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&a);
ans^=a;
}
printf("%d\n",ans);
}
}