题意:给你1990,1.1----2001.11.4范围内的某一天,格式year month day 两人轮流操作:
1. day+1;
2.month + 1;
谁先达到2001.11.4号,谁获胜。
思路:要到达11.4,,由于11+4=15 是奇数。
并且 上面的两种操作,都会使日期的奇偶性改变。
因此,只要刚开始的日期是偶数,先手赢;
奇数,先手败。
但是 还有特例 9.30 9+30=39 奇数,+1之后是10.1 10+1=11 还是奇数。
11 30 11+30=41 是奇数 ,+1之后是 12.1 12+1=13 还是奇数;
所以当日期是偶数 以及上面这两个特例的时候先手胜,其他情况先手败。
具体 看代码。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<queue> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 using namespace std; 7 const int INF=0x3f3f3f3f; 8 const int maxn=1e5+5; 9 int main() 10 { 11 int T; 12 cin>>T; 13 while(T--) 14 { 15 int y,d,m; 16 cin>>y>>m>>d; 17 if((m+d)%2==0||(d==30&&(m==11||m==9))) 18 printf("YES "); 19 else printf("NO "); 20 } 21 22 return 0; 23 }
19:41:27