#P1082. Calendar Game
Calendar Game
题目描述
亚当和夏娃参加了今年的 ACM 国际大学生编程比赛。昨晚,他们为了庆祝这次比赛,玩了一个“日历游戏”。这个游戏包括从 1900 年 1 月 1 日到 2001 年 11 月 4 日(比赛当天)的所有日期。游戏开始时,会从这个区间内随机选择一个日期。然后,玩家亚当和夏娃轮流进行操作,亚当先开始:亚当、夏娃、亚当、夏娃,依此类推。游戏的规则非常简单:从当前日期出发,轮到的玩家可以选择移动到下一天的日期,或者移动到下一个月的同一天。如果下一个月没有对应的同一天,则只能移动到下一天的日期。例如,从 1924 年 12 月 19 日,你可以移动到 1924 年 12 月 20 日(下一天的日期),或者移动到 1925 年 1 月 19 日(下一个月的同一天)。然而,从 2001 年 1 月 31 日,你只能移动到 2001 年 2 月 1 日,因为 2001 年 2 月 31 日是无效的。
当玩家恰好到达 2001 年 11 月 4 日时,该玩家赢得游戏。如果玩家移动到 2001 年 11 月 4 日之后的日期,则该玩家输掉游戏。
编写一个程序,判断给定初始日期时,先手玩家亚当是否有必胜策略。
对于这个游戏,你需要识别闰年,即 2 月有 29 天的年份。在格里高利历中,闰年是能被 4 整除的年份。因此,1993 年、1994 年和 1995 年不是闰年,而 1992 年和 1996 年是闰年。此外,以 00 结尾的年份只有在能被 400 整除时才是闰年。因此,1700 年、1800 年、1900 年、2100 年和 2200 年不是闰年,而 1600 年、2000 年和 2400 年是闰年。
输入
输入包含 个测试用例。测试用例的数量 在输入文件的第一行给出。每个测试用例写在一行中,对应一个初始日期。一行中的三个整数 YYYY MM DD
表示 YYYY 年 MM 月 DD 日的日期。请记住,初始日期是从 1900 年 1 月 1 日到 2001 年 11 月 4 日之间的随机日期。
输出
每个测试用例打印恰好一行。该行应包含答案“YES”或“NO”,以回答亚当是否有必胜策略的问题。因为我们有 个测试用例,所以你的程序应该输出总共 行的“YES”或“NO”。
输入数据 1
3
2001 11 3
2001 11 2
2001 10 3
输出数据 1
YES
NO
NO
来源
大田 2001