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”表示亚当是否有必胜策略。
提示
建议先把所有情况都算出来^_^
代码如下:
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
while (N--)
{
int y,m,d;
cin>>y>>m>>d;
if (m==9&&d==30)
cout<<"YES"<<endl;
else if (m==1&&d==30)
cout<<"YES"<<endl;
else if ((m+d)%2==0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
运行结果:
找规律的题目,一开始以为算奇数步和偶数步就可以了,结果是大大的WA,后来参考别人的才明白有特殊情况。