题目
题目描述
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
*/