伊甸园日历游戏(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;
} 
目录
打赏
0
0
0
0
63
分享
相关文章
SwiftUI—方便用户选择日期的DatePicker日期拾取器
SwiftUI—方便用户选择日期的DatePicker日期拾取器
1718 0
SwiftUI—方便用户选择日期的DatePicker日期拾取器
|
4月前
|
手搓日历组件,大屏样式最佳解决方案!
【10月更文挑战第6天】手搓日历组件,大屏样式最佳解决方案!
74 4
手搓日历组件,大屏样式最佳解决方案!
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
233 86
js使用表格生成一个日历,点击按钮上查看上个月,点击按钮下,查看下个月,月份,年份
js使用表格生成一个日历,点击按钮上查看上个月,点击按钮下,查看下个月,月份,年份
177 0
项目猜拳游戏
用Python语言,编写出猜拳游戏。
94 0
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
118 0
带薪玩一周游戏,还要涨工资
带薪玩游戏,是多么开心的事情,我就找到了。 前段时间,公司接到一个模拟业务场景的项目,需要在图形界面上模拟业务场景,比如人跑动,拖拽物体等,从而获取不太业务场景的模拟数据。
129 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等