HDU1079 Calendar Game

  设k=m+d,容易知道,终态2001.11.4为P局面(后手胜),此时k=11+4=15,为奇态。我们不妨假设:如果k为寄态,先手胜;k为偶态,后手胜。对于一年中某个日子,其后一天或者下个月同一天都是k的奇偶转换,对于先手来说,如果此时k为奇态,则必胜;如果为偶态,则看是否能给后手也留下一个偶态让其处于N局面(先手胜)。一年中可以偶态到偶态的日子只有4个:4.30、6.30、9.30、11.30。这4个日子虽然k为偶数,但也属于先手胜局面,因为这四个日子能给对方留下k偶态。

#include <stdio.h>
#include <string.h>

int main()
{
    int y, m, d, t;
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d%d%d", &y, &m, &d);
        int k = m + d;
        if(((m==4||m==6||m==9||m==11)&&d==30)||k % 2 == 0)
            puts("YES");
        else
            puts("NO");
    }
    return 0;
}
View Code

相关文章: