zoukankan      html  css  js  c++  java
  • 题解 CF1324A 【Yet Another Tetris Problem】

    (Solution:)

    首先我们知道每一个数,在变化的时候都是只能+2,而2是个偶数,所以不会改变原数的奇偶性,所以我们只需要判断是否都是奇偶性相同的数,如果是就输出YES,不是就输出NO

    ( extbf{位运算:})

    因为此体会涉及到位运算的知识,所以给大家普及一下。

    1. (&)符号,(x&y),会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如(3(11)&2(10)=2(10))
    2. (|)符号,(x|y),会将两个十进制数在二进制下进行或运算,然后返回其十进制下的值。例如(3(11)|2(10)=3(11))
    3. 符号,xy,会将两个十进制数在二进制下进行异或运算,然后返回其十进制下的值。例如3(11)^2(10)=1(01)
    4. (<<)符号,左移操作,(x<<2),将(x)在二进制下的每一位向左移动两位,最右边用0填充,(x<<2)相当于让(x)乘以4。相应的,(>>)是右移操作,(x>>1)相当于给x/2,去掉(x)二进制下的最有一位。
    5. ~取反符号,可以将一个数的每一位都取反。

    我们这里把位运算讲了一遍,但是真正用到的其实只有第一个 (&) 符号

    (code:)

    #include<bits/stdc++.h>//万能头文件
    using namespace std;//标准数据库
    inline int read()//快速读入
    {
        int x=0;bool f=true;char c=getchar();
        if(c==EOF) return 0;
        while(c<'0' || c>'9'){if(c=='-') f=false;c=getchar();}
        while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
        return f?x:-x;
    }
    int T,n,x,a;
    bool f;
    int main()
    {
        T=read();//输入数据组数
        while(T--)
        {
            f=1;//初始化
            n=read();//输入一共有多少数
            x=read();//将第一个数输入进来当做基准数
            for(int i=1;i<n;i++)
            {
                a=read();//输入以后的每个数
                if((a&1)!=(x&1)) f=0;//如果奇偶性不同,就将 f 置0
            }
            puts(f?"YES":"NO");//如果 f 为真就输出 YES 要不然就输出 NO
        }
        return 0;
    }
    
  • 相关阅读:
    如何理解面向对象和面向过程
    IIS端口被占用
    SQL UNION操作符
    SQL(MSSQLSERVER)服务启动错误代码3414
    WCF学习之路(一)
    AJAX技术学习总结
    AJAX之XMLHttpRequest对象
    软考之汇编语言
    IP地址的分配
    数组偏移量
  • 原文地址:https://www.cnblogs.com/ForeverOIer/p/12660391.html
Copyright © 2011-2022 走看看