zoukankan      html  css  js  c++  java
  • 【洛谷T89359 扫雷】

    题目链接

    这个题有一个十分简单的做法

    我们可以考虑位运算

    按位异或(^)

    异或,英文为exclusive OR,缩写成xor
    异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。
    其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
    如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
                                              ——百度百科
    简单来说,就是将异或的两数用二进制表达出来
    然后比较每一位
    相同返回0,不同返回1
    那么我们可以清楚的发现:
                  a^a=0
                  0^a=a
                  a^b^a=b
    代码由此可以简洁的写出
    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
        int a=0,b=1;
        char c=getchar();
        while(c<'0'||c>'9')
        {
            if(c=='-')
                b=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9')
        {
            a=(a<<3)+(a<<1)+c-'0';
            c=getchar();
        }
        return a*b;
    }
    inline void out(int n)
    {
        if(n<0)
        {
            putchar('-');
            n=-n;
        }
        if(n>=10)
            out(n/10);
        putchar(n%10+'0');
    }
    int n,m,ans;
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++)
        {
            m=read();
            ans^=m;
        }
        out(ans);
        return 0;
    }
     
  • 相关阅读:
    hdu 5238 Calculator(线段树,中国剩余定理¥)
    hdu 5237 Base64(模拟)
    hdu 5236 Article(概率dp¥)
    hdu 2147 kiki's game(找规律)
    hdu 2149 Public Sale(bash)
    Calculation PartⅡ
    Calculator Part Ⅰ (代码规范化修改)
    Calculator Part Ⅰ
    视频课程
    编程题1001.A+B Format (20)
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/11237875.html
Copyright © 2011-2022 走看看