https://vpn.bupt.edu.cn/http/10.105.242.80/problem/p/84/
wa到怀疑人生, 原来是要64位整数
map大法
#include <bits/stdc++.h>
#define FF(a,b) for(int a=0;a<b;a++)
#define F(a,b) for(int a=1;a<=b;a++)
#define LEN 510000
#define INF 1000000
#define bug(x) cout<<#x<<"="<<x<<endl;
using namespace std;
typedef long long ll;
int main(){
// freopen("./in","r",stdin);
int N;
while(scanf("%d",&N)!=EOF){
map<ll,int> cnt;
F(i,N){
ll t;
scanf("%lld",&t);
cnt[t]++;
}
map<ll,int>::iterator it=cnt.begin();
while(it!=cnt.end()){
if(it->second==1){
printf("%lld\n",it->first);
break;
}
it++;
}
}
return 0;
}
位运算巨法
https://blog.csdn.net/birdstorm_s/article/details/19967311
#include <bits/stdc++.h>
#define FF(a,b) for(int a=0;a<b;a++)
#define F(a,b) for(int a=1;a<=b;a++)
#define LEN 510000
#define INF 1000000
#define bug(x) cout<<#x<<"="<<x<<endl;
using namespace std;
typedef long long ll;
int main()
{
// freopen("./in","r",stdin);
ll x, n, app_1, app_2, not_three;
while(scanf("%lld",&n)!=EOF){
app_1=0, app_2=0;
while(n--){
scanf("%lld",&x);
app_2 |= app_1&x;
app_1 ^= x;
not_three = ~(app_1&app_2);//app_1&app_2 是出现3次
app_1 = not_three&app_1;
app_2 = not_three&app_2;
}
printf("%lld\n",app_1);
}
return 0;
}
两方法比较