P1512 伊甸园日历游戏

题目

题目描述

Adam和Eve玩一个游戏,他们先从1900.1.1到2006.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,这样的操作是非法的,我们不允许这样做。而且所有的操作均要考虑历法和闰年的规定。

谁先将日期变到2006.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 11 4必败
2021 10 4,2021 11 3必胜(b+c是偶数)
2021 10 3,2021 10 5,2021 11 2,2021 11 4必胜(b+c是奇数)
以此类推
但9 30和11 30不行,因为9.30和11.30月份+1,即10.30和12.30,都是必败局面

代码

#include<bits/stdc++.h>
using namespace std;
int a,b,c,n,ans=0;
int main(){
	cin>>n;
	while(n--){
		cin>>a>>b>>c;
		if((b==9&&c==30)||(b==1&&c==30)||((b+c)%2==0)) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
/*
3
2001 11 3
2001 11 2
2001 10 3

YES
NO
NO
*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值