UVA13275 跳跃的生日 Leap Birthdays

题目描述

您知道谁的生日是 $2$ 月 $29$ 日吗?我不知道。但我想到会有这样一个人,这让我很难过。像这样的人会很倒霉,你不觉得吗?与其他人不同,他们每四年过一次生日。有时,甚至四年都没有。因为我们知道 $2$ 月 $29$ 日只发生在闰年。当且仅当以下函数返回 $\text{true}$ 时,一年才是闰年。 ```cpp bool isLeapYear(int year){ if(year%400==0)return true; else if(year%100==0)return false; else if(year%4==0)return true; else return false; } ``` 上述函数意味着,能被 $4$ 整除但不能被 $100$ 整除的年份是闰年,但能被 $400$ 整除的年份也是闰年(尽管也可以被 $100$ 整除)。 但这太不公平了。以 $1888$ 年 $2$ 月 $29$ 日出生的人为例。他将在 $1892$ 年 $2$ 月 $29$ 日迎来另一个生日。然后在 $1896$ 年。然后在 $1900$ 年,他将不会有。因为这是一个不能被 $400$ 整除但可以被 $100$ 整除的年份。真可惜!他将不得不等待 $8$ 年才能等到 $1904$ 年的下一个生日。 因此,给定一个人的生日和查询年份 $QY$ ,您无法轻易说出他截至 $QY$ 年 $12$ 月 $31$ 日的生日数。因为这涉及复杂的数学。这会让你非常难过。所以这些是人类需要解决的非常危险的问题。老实说,我自己在写这个问题时,想到那些非常不幸的人,我自己也感到有点难过和沮丧。我不想再想他们了,所以请帮我解决这个问题。给定一年的 $QY$,我想知道到年底 $QY$ 一个人庆祝了多少个生日。您还将获得此人的生日。 例如,假设一个人的生日是 $1888$ 年 $2$ 月 $29$ 日,如果 $QY = 1910$,他庆祝多少个生日?答案是 $4$ ($1892$,$1896$,$1904$ 和 $1908$)。同样,如果 $QY = 1990$,则 $1987$ 年 $12$ 月 $31$ 日生日的人庆祝了 $3$ 个生日。请注意,一个刚出生的人不能庆祝他的生日。这就是为什么我们没有将出生年份算作生日。

输入格式

第一行包含一个整数 $T$($T \leq 100$),表示测试用例的数量。每个测试用例包含四个整数:$D$、$M$($1 \leq M \leq 12$)、$Y$($1850 \leq Y \leq 2016$)和 $QY$($Y \leq QY \leq 3000$)。其中,$D$、$M$ 和 $Y$ 共同组成一个人的生日,$D$ 表示日($D$ 始终是基于 $M$ 和 $Y$ 的有效日期),$M$ 表示月份,$Y$ 表示年份。你可以假设输入的日期始终有效。$QY$ 是查询的截止年份(包含该年)。

输出格式

每个测试用例输出一行:`Case C: X`,其中 $C$ 是测试用例编号,$X$ 是答案。请通过样例以明确格式。