HDU 2095 位异或

来源:互联网 发布:python re模块 小甲鱼 编辑:程序博客网 时间:2024/05/02 02:04

原题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2095


题目大意就是找出所有数字中只出现过一次的那个数 题目保证除了这个数外 其他所有的数都会出现偶数次


简单粗暴的方法是用容器 如果这个数在容器内 就删除 不在容器内 就加入容器


另一种神奇的方法就是用位异或 也就是  ^  这个运算符


位异或有一些简单的性质

比如

0^n=n

n^n=0

m^n^m=n


这道题用到的是第三个性质


将所有数进行位异或 最后得到的就是答案了


直接贴代码

#include <stdio.h>int main(){    int n,i,a;    while(scanf("%d",&n)!=EOF && n)    {        a = 0;        while(n--)        {            scanf("%d",&i);            a ^= i;        }        printf("%d\n",a);    }    return 0;}