#P3393. Lucky and Good Months by Gregorian Calendar
Lucky and Good Months by Gregorian Calendar
描述
你是否曾好奇为什么通常一年有365天,而不是400天?为什么八月有31天,而二月只有28天?为什么一周有7天,而不是6天?古代人使用的日历和我们一样吗?关于这些问题,有许多有趣的猜想和理论。现在我们将讲述一个可能解释这些问题的故事。根据故事中的信息,你需要用计算机解决一个有趣的问题。请注意,关于日历系统的理论有很多,本题仅以简化的方式讲述其中一种。
历史上,人们通过观察地球、月亮和太阳的相对位置来记录时间。一天是地球自转一周的时间。一年被定义为地球绕太阳公转的时间。地球绕太阳公转大约需要天,且存在微小变化。出于实际需要,日历年份必须包含整数天。因此,人们需要通过添加闰日来使日历与太阳同步。如果你将日历年份固定为365天,大约每4年需要添加一个闰日。然而,这种日历仍无法与地球公转位置完全同步,因为其平均每年为天,略多于实际周期。
根据测量地球公转周期的精度不同,人们需要设计不同的闰年规则。西方曾发明过多种著名的日历系统,更不用说更复杂的东方系统。为了简化问题,我们在此不讨论中国等东方日历系统,而专注于西方主要日历系统。最早的可能是儒略·凯撒于公元前46年创立的儒略历。它的精度不足,每128年会偏差一天。接下来是16世纪约瑟夫·尤斯图斯·斯卡利格发明的天文儒略历。两者都有简单的闰年判定规则。
下一个主要系统是格里高利历,于1582年发明,因为人们终于注意到日历与地球公转的同步问题。在此系统中,每100年会跳过闰年,除非是400的倍数。通过这一调整,日历年的平均天数为天。注意,该系统仍不完美,每3289年会多出一天。还有其他改进建议,如天文学家约翰·赫歇尔、希腊东正教和美国海军SPAWAR小组的方案。但为简化,人们通常使用格里高利历。
以下是格里高利历的闰年判定规则:
- 对于年份,且,当且仅当:
- 能被4整除,且
- 不能被100整除,除非能被400整除。
- 对于年份,,当且仅当能被4整除时是闰年。
因此,公元4年是闰年,100年是闰年,1900年不是闰年,但2000年是闰年。闰年有366天(多出的为2月29日),平年有365天。
在计算时,还需注意以下格里高利历的事实:历史上西方不同地区同时使用多种日历系统。现行的西方日历系统(主要遵循格里高利历,称为格里高利改革)于1752年9月3日被英国及其属地采用。出于某些原因(此处不赘述),从1752年9月3日起跳过了11天,即格里高利历中1752年9月3日至13日之间的日期不存在。罗马于1582年采用格里高利历。此外,由于历史原因,1700年被格里高利历视为闰年。格里高利历还有其他变体,但本题采用上述定义。
一个朔望月定义为连续新月或满月的平均间隔时间,即天。人们观察到每年平均有次满月。由于天数仍非整数,若将一年设为12个月、每月30天,则需每年额外添加几天。为避免麻烦,另一种方法是让每月的天数在30和31之间交替,但这会多出一天。经过多次调整,格里高利历将平年每月的天数依次设为31、28、31、30、31、30、31、31、30、31、30、31天。闰年时二月多一天。各月名称(从一月到十二月依次为January、February、March、April、May、June、July、August、September、October、November、December)也有许多有趣的故事。例如,罗马元老院将七月命名为July以纪念改革日历的儒略·凯撒。
古代一周的天数可能为4到10天不等。在格里高利历中,一周大致对应月亮的四分相位(易于观察),且因宗教等原因定为7天。七天名称(Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、Saturday)也有许多故事。
在T岛,人们相信星辰位置能决定命运。当地人的工作日为周一至周五,周末(周六和周日)为固定假日,无其他假期。根据古老传说:
- 若某月最后一个工作日是周五,则该月为幸运月。例如2006年9月的最后一个工作日是9月29日(周五),因此是幸运月;2006年7月的最后一个工作日是7月31日(周一),不是幸运月;2006年8月的最后一个工作日是8月31日(周四),也不是幸运月。据说在幸运月每天只吃素会带来财运。
- 若某月第一个工作日是周一,则该月为吉祥月。例如2006年7月的第一个工作日是7月3日(周一),是吉祥月;2006年10月的第一个工作日是10月2日(周一),也是吉祥月;2006年8月的第一个工作日是8月1日(周二),不是吉祥月;2006年9月的第一个工作日是9月1日(周五),也不是吉祥月。据说在吉祥月每晚10点前睡觉会非常健康。一个月可以同时是幸运月和吉祥月。
给定一段时间,你的任务是使用上述格里高利历系统,统计该时间段内幸运月和吉祥月的数量。
输入格式
第一行包含测试用例数()。随后每个测试用例占一行,包含四个数字:
其中()为起始年份,()为起始月份,()为结束年份,()为结束月份。
注意:保证起始月份不晚于结束月份。
输出格式
对每个测试用例,输出从年月(含)到年月(含)之间的幸运月数量和吉祥月数量,两数之间用空格分隔。
示例输入
2
2006 9 2006 9
2006 7 2006 9
示例输出
1 0
1 1
来源
Kaohsiung 2006