【题目描述】
有个粗心的同学。今天在食堂打翻了洗碗大伯的篮子,筷子落了一地。
结果大伯怒了,硬是要这位同学把筷子一对一对配回去。
每只筷子都是有长度的,长度一样的筷子才算是一对。不过洗碗大伯跟他说其中有一只筷子是落单的。你能帮这位粗心的同学找出落单的筷子的长度吗?
【输入】
第一行为一个正整数 NN,代表筷子的支数(1≤N≤50000001≤N≤5000000)。
接下去一行有 NN 个正整数,代表每只筷子的长度 LiLi(1≤Li≤21474836471≤Li≤2147483647),可能有很多筷子的长度都是一样的。
【输出】
输出落单的筷子的长度。
【输入样例】
5
1 2 1 2 3
【输出样例】
3
这里我们可以用异或做位运算,得到结果
源代码:
#include<iostream> #include<cstdio> using namespace std; const int N=5e6+10; int n; int l; int res; int main(){ cin>>n; for(int i = 1; i <= n; i++){ int x; scanf("%d", &x); res^=x; } cout<<res<<endl; return 0; }