• T82889 扫雷


    题目链接

    题目背景

    GHGHGH是一位特工,他收到了一系列数字表示某地区地雷的埋雷和爆炸情况。

    题目描述

    这一系列信息一共有nnn个数字,每个地雷每个地雷都有自己的编号,当这个编号第一次出现时代表这颗地雷被埋下,当第二次出现时代表这颗地雷被引爆了。比如 3 4 3 1 4表示最终只剩下一号地雷,且已知最终只有一颗地雷剩下,GHGHGH很聪明,但因为nnn很大他也懒得算,他想设计一个程序找出最后哪颗地雷剩余。(每颗地雷一定出现两次,其中只有一颗地雷出现一次)

    输入输出格式

    输入格式:

    第一行一个数nnn表示出现的数字个数 第二行nnn个数表示地雷埋雷和引爆情况

    输出格式:

    输出最终剩下的那颗地雷

    输入样例1:

    5
    1 2 2 1 3 

    输出样例1:

    3

    输入样例2:

    7
    3 4 2147483647 4 1 1 3

    输出样例2:

    2147483647

    思路:

      由于数据保证了除了答案以外每个数都会出现两次。所以根据异或(对于两个二进制数a和b的每一位,如果该位上数字不同,则返回1,如果该位上数字相同,则返回0。如果长度不够则补前导0)的运算原则(一个数对任何一个数异或偶数次之后不变),所以直接异或就好啦!

    代码:

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    inline int read()
    {
        int x=0,f=1;
        char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    
    int n,m,ans;
    
    int main()
    {
        n=read();
        for(register int i=1;i<=n;++i)
        {
            m=read();
            ans=ans^m;
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    redis:高可用分析
    mysql:explain分析sql
    python中注意事项(更新)
    jupyter使用小技巧(更新)
    Jupyter中的快捷键
    Excel制作甘特图
    Vim编辑器常用命令
    Mysql主从
    常用MySql命令
    进程与线程的一个简单解释
  • 原文地址:https://www.cnblogs.com/-hhs/p/11025241.html
Copyright © 2020-2023  润新知