伊甸园日历游戏(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;
} 
相关文章
|
1月前
5分钟的时间制作一个反弹球游戏
5分钟的时间制作一个反弹球游戏
34 0
|
机器学习/深度学习 存储 编解码
第十三周:文件
重点学习按位运算
106 0
【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天-1
【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天
74 0
【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天-2
【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天
80 0
【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天-2
AcWing 668. 游戏时间2
AcWing 668. 游戏时间2
47 0
AcWing 668. 游戏时间2
AcWing 667. 游戏时间
AcWing 667. 游戏时间
25 0
AcWing 667. 游戏时间
L1-2 h0053. 游戏时间 (5 分)
读取四个整数A,B,C,D,用来表示游戏的开始时间和结束时间。 其中A和B为开始时刻的小时和分钟数,C和D为结束时刻的小时和分钟数。 请你计算游戏的持续时间。 比赛最短持续1分钟,最长持续24小时。
117 0
PTA——7-4 奇葩楼层 (15 分)
PTA——7-4 奇葩楼层 (15 分)
133 0

热门文章

最新文章