zoukankan      html  css  js  c++  java
  • ZOJ 1024 Calendar Game

    原题链接

    题目大意:2001年11月4日是一个黄道吉日,有两个人做游戏,看谁先数到这个日子。可以往后数一天,比如2号到3号,30号到31号,也可以往后数一个月。给出一个起始的日子,求能否保证先开始游戏的人必胜。

    解法:一开始一直在找规律,往前推算了两个月,没有发现规律。后来Google了一下,发现有个很巧妙的方法。日期或者月份每增加一次,日期+月份的奇偶性就会改变一次,所以一个回合之后奇偶性是不发生变化的。11+4=15是偶数,只要保证开始的日期+月份是偶数,先数的人就可以赢。但是,有几个特例。2月28日是偶数,3月1日也是偶数,奇偶性没有发生变化。同样的,9月30日、11月30日的后一天也是奇数,这两天也要排除。剩余的日子都可以赢。

    参考代码:

    #include<iostream>
    using namespace std;
    
    int main(){
    	int y,m,d,n;
    	
    	cin>>n;
    	while(n--){
    		bool flag=false;
    		cin>>y>>m>>d;
    		if(m==2&&d==28)
    			flag=true;
    		else if(m==9&&d==30)
    			flag=true;
    		else if(m==11&&d==30)
    			flag=true;
    		else if((m+d)%2==0)
    			flag=true;
    		if(flag)
    			cout<<"YES"<<endl;
    		else
    			cout<<"NO"<<endl;
    	}
    
    	return 0;
    }
  • 相关阅读:
    ycsb
    Tikv docker-compose go client
    Raft 协议
    kubectl 命令
    JAVA判断是否是微信内置浏览器,是否是在微信内打开
    IDEA设置默认maven配置
    JAVA中JDK1.8的LocalDateTime日期类的操作方法
    JAVA在JDK1.8中Stream流的使用
    Linux(Centos)部署Jenkins
    Linux(Centos)安装maven
  • 原文地址:https://www.cnblogs.com/naive/p/3568719.html
Copyright © 2011-2022 走看看