问题标题: 酷町堂:3441 谁是单身贵族

0
0
已解决
殷熙玲
殷熙玲
中级守护
中级守护
#include<iostream>
using namespace std;
long long a[1000001],b[1000001],n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[a[i]]++;
    }
    for(int i=1;i<=1000005;i++){
        if(b[a[i]]%2!=0){
            cout<<a[i];
            b[a[i]]=0;
        }
    }
    return 0;
}

WA90分,求找错


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

考虑异或的**质

a^a=0   a^a^a=a   (a^b)^c=a^(b^c)

所以就可以轻松解决了

核心

while(n--){
        int x;
        scanf("%d",&x);  //数据很大,需要scanf,不然TLE
        pos^=x;
    }

最后pos就是答案了

0
汪宇航
汪宇航
新手启示者
新手启示者

桶,你这样写的话的90都算凑巧了

0
0
武奕楷
武奕楷
新手天翼
新手天翼

用位运算

 

看下面↓

 

 

 

 

 

 

 

 

首先,定义变量ans;

在输入时直接ans^=a[i];

再输出ans

望采纳

武奕楷在2021-08-20 21:05:19追加了内容

至于ans^=a[i];是什么意思并不重要,只要这样做就行了

0
李奕歌
李奕歌
初级天翼
初级天翼

核心:

for(int i=1;i<=n;i++){
        scanf("%d",&t);
        ans^=t;
    }

 

0
王文博
王文博
缔造者之神
缔造者之神
for(int i=1;i<=n;i++)
    {
        cin>>t;
        ans^=t;
    }

请加上火车头和黑科技即可AC!

望采纳!

0
王泽轩
王泽轩
资深天翼
资深天翼

核心:

for(int i=1;i<=n;i++){
    cin>>a;
    ans^=a;
}
输出ans;

 

0
熊智晖
熊智晖
高级天翼
高级天翼
 
scanf("%d",&n); 
for(int i=1;i<=n;i++){ 
scanf("%d",&t); 
ans^=t; 
}
cout<<ans; 
return 0; 
}

核心

我要回答