zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    【6.24校内test】T1 江城唱晚
    【6.20校内test】
    【洛谷p1983】车站分级
    【洛谷p2239】螺旋矩阵
    【6.18校内test】T2分数线划定
    【6.18校内test】T1多项式输出
    【洛谷p1981】表达式求值
    【洛谷p1077】摆花
    【洛谷p1158】导弹拦截
    博客园 api
  • 原文地址:https://www.cnblogs.com/-hhs/p/11025241.html
Copyright © 2011-2022 走看看