伊甸园日历游戏(vijos--1004)

简介: 伊甸园日历游戏(vijos--1004)

题目:

Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来。然后他们轮流对这个日期进行操作:

1 : 把日期的天数加1,例如1900.1.1变到1900.1.2

2 : 把月份加1,例如:1900.1.1变到1900.2.1

其中如果天数超过应有天数则日期变更到下个月的第1天。月份超过12则变到下一年的1月。而且进行操作二的时候,如果有这样的日期:1900.1.31,则变成了1900.2.31,这样的操作是非法的,我们不允许这样做。而且所有的操作均要考虑历法和闰年的规定。

谁先将日期变到2001.11.4谁就赢了。

每次游戏都是Adam先操作,问他有没有必胜策略?

格式

输入格式

一个测试点。多组数据。

第一行为数据组数。

接下来一行X Y Z表示X年Y月Z日

输出格式

输出“YES”or“NO”表示亚当是否有必胜策略。

样例输入1

3
2001 11 3
2001 11 2
2001 10 3

样例输出1

YES
NO
NO

解题思路:这个题看起来是一个日期的计算的题,其实把情况都计算一遍就会看出来这是一个找规律的博弈题。

即2001.10.4和2001.11.3必胜(此时m+d=偶数)再推上去是11.2,10.3,9.3,都是必败(此时m+d=奇数),以此类推……

从9月30和11月30开始推算的话也是必胜的(这是一个例外)

程序代码:

#include<stdio.h>
int main()
{
  int i,n,m,j,k,x,y,z;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
    scanf("%d%d%d",&x,&y,&z);
    if(y==9&&z==30)
      printf("YES\n");
    else if(y==11&&z==30)
      printf("YES\n");
    else if((y+z)%2==0)
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
} 
相关文章
|
8月前
|
C++
基于Qt的简易桌面日历设计与实现
基于Qt的简易桌面日历设计与实现
310 1
SwiftUI—方便用户选择日期的DatePicker日期拾取器
SwiftUI—方便用户选择日期的DatePicker日期拾取器
1674 0
SwiftUI—方便用户选择日期的DatePicker日期拾取器
|
8月前
左右可以滑动半年的超级日历,支持日历部分收起和自动重定向为北京时间
左右可以滑动半年的超级日历,支持日历部分收起和自动重定向为北京时间
53 0
|
小程序
QT日历制作
QT日历制作
116 0
lunar="false",日历插件不显示农历
lunar="false",日历插件不显示农历
102 1
|
8月前
5分钟的时间制作一个反弹球游戏
5分钟的时间制作一个反弹球游戏
86 0
|
前端开发 JavaScript
JavaScript日历制作并实现拖动选择日期
JavaScript日历制作并实现拖动选择日期
89 0
uniapp写一个随时间变化的预约日期列表
const today = new Date(); const dateArray = []; const dayOfWeekArray = []; const yearMonthDayArray = [];
99 0
倒计时功能制作
今天制作一个商城项目距离抢购还剩多长时间的一个小功能 首先要知道这个倒计时是不断的变化的,所以需要用到定时器来自动变化(setInterval),有三个标签存放时分秒,再利用innerHTML将计算出来的时间放入三个标签内,第一次执行也是间隔毫秒数,因此刷新页面会有空白,我们最好采取封装函数的方式,这样可以先调用一次这个函数,防止刚开始刷新页面有空白问题。
|
Java 数据安全/隐私保护 容器
背记不如实战系列-javaGUI实例-日历制作
背记不如实战系列-javaGUI实例-日历制作
157 0

热门文章

最新文章

下一篇
开通oss服务