本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题面
警惕国奖爷打牌
2000ms 1MB
Description
众所周知,国奖爷非常爱打牌,现在国奖爷手上有编号从到的若干张牌,为防止国奖爷打牌,正义的鸽谭英雄比特侠(BitMan)出手,打乱了国奖爷的牌,并从中取走一张。现在,被国奖爷收买的你,要帮国奖爷判断,被拿走的是哪一张牌。
Input Description
第一行两个整数。
第二行个整数,分别代表国奖爷手上剩余牌的编号。
对于所有的数据, , , 。
Output Description
输出一行一个整数,表示国奖爷丢失的那张牌的编号。
Input Sample
1 5
4 2 1 5Output Sample
3
Hint
内存限制放不下所有的输入。
题解
由于内存放不下所有的数,可以考虑换一种方案,即求到的和,再逐个减去输入数据,这样只要存两个变量,求和、输入。同时考虑到输入数据,会爆int(32位整形,储存范围在[,])所以可以考虑开long long(64位整形),或者直接用位运算求异或和(XOR)代替。注意不要使用cin,慢,可以用scanf函数,有能力的可以写快速读入。
代码
// by Concyclics
//
//
#include <cstdio>
int main()
{
int L,R,ans,ai;
scanf("%d %d",&L,&R);
ans=R;
for(int i=L;i<R;i++)
{
scanf("%d",&ai);
ans^=i;
ans^=ai;
}
printf("%d",ans);
return 0;
}