背景
Talent先生接到了一份定制筷子的任务,在这项任务中,由于筷子有各种型号,所以每对筷子的长度不一定相同,几天的努力后,Talent先生终于如期完成了所有筷子的制作工作,他走进卧室,准备好好的睡一觉再将这些筷子运走…
然而…Talent先生还没睡着…就见他的小弟弟“申申”慌慌张张的跑进来:”我错了…我…我不小心弄丢了一根筷子”
描述
Talent先生立即跟随“申申”来到了“案发现场”,在装筷子的箱子里,果然只有奇数根筷子了…,送货的日期马上就要到了..Talent知道现在应该做的是尽快重制那根筷子而不是和“申申”算帐…而“申申”却竟然忘记了自己弄丢的筷子的长度(你可以理解为型号)..于是Talent给了“申申”一个任务:通过将箱子里的筷子逐一配对的方式进行查找,弄清到底丢了什么型号的筷子。
由于“申申”太小了,很难完成这项任务,便找到了精通“OI”的你,“申申”将给你目前箱子里各个筷子的长度(不一定按顺序),而你需要告诉申申,所丢掉的筷子的长度是多少。
输入格式
第一行:一个整数N:表示目前货箱里有N根筷子(N是奇数)。
第二行:N个整数,分别代表目前货箱里各个筷子的长度L。
输出格式
只有一行:有一个数字,代表丢失的那根筷子的长度。
样例输入
21
1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10
样例输出
11
限制
共有5个测试数据,每个测试数据包含1个测试点,每个测试点1s
祝福大家…不要超时….不要运行时错误….
输入数据中N的大小猜测是1000万到2000万。筷子的长度在int范围内。
题解:
学到了新的姿势,异或运算真是个好东西。主要是他符合交换律就更好啦!!! ( a xor a == 0 , 0 xor a == a )
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<algorithm>
#define ll long long
#define LiangJiaJun main
using namespace std;
int n;
ll x,ans;
int LiangJiaJun(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&x);
ans ^= x;
}
printf("%lld\n",ans);
return 0;
}