【异或】SOJ Find Differences

来源:互联网 发布:mac不识别u盘启动 编辑:程序博客网 时间:2024/04/25 18:26

Description

给你 n*2+1 个数 其中有 n 对是一样的 让你找出单出来的那一个

Input

输入有多组数据每组数据第一行,是一个整数 n(1 <= n <= 1000000) 接下来 n*2+1 行,每行一个整数 (在 int 范围内)

Output

输出单出来的那个数

Sample Input

12211222

Sample Output

12

 

分析:此题排序后查找必然超时 使用异或运算可以使相同的数抵消 所以连续异或2n+1次得到得即是答案

代码如下:

#include <cstdio>int main(){    int n,i,temp,ans;    while(scanf("%d",&n)==1)    {        scanf("%d",&ans);        for (i=1;i<=n*2;i++)        {            scanf("%d",&temp);            ans^=temp;        }        printf("%d\n",ans);    }    return 0;}


 

0 0