#4720. [USACO 1.2.3] Friday the Thirteenth

[USACO 1.2.3] Friday the Thirteenth

Friday the Thirteenth

13 日星期五真的是一种不寻常的事件吗?

也就是说,一个月的 13 日落在星期五的频率是否低于其他任何一天?为了回答这个问题,请编写一个程序,计算在给定的 N 年期间,每个月的 13 日落在周六、周日、周一、周二、周三、周四和周五的频率。测试的时间范围是从 1900 年 1 月 1 日到 1900 年 + N - 1 年的 12 月 31 日,N 为给定的年数。N 为正数,且不会超过 400。

注意,起始年份是 1900 年,而不是 1990 年。

在解决这个问题之前,你需要了解一些事实:

  • 1900 年 1 月 1 日是周一。

  • 9 月、4 月、6 月和 11 月各有 30 天,其余月份(除 2 月外)都有 31 天。2 月通常有 28 天,但在闰年有 29 天。

  • 能被 4 整除的年份是闰年(1992 = 4×498,因此 1992 年是闰年,但 1990 年不是闰年)。

  • 对于世纪年份,上述规则不适用。能被 400 整除的世纪年是闰年,其他都不是。因此,1700 年、1800 年、1900 年和 2100 年不是闰年,但 2000 年是闰年。

请不要使用计算机语言中的任何内置日期函数。

也不要预先计算答案。

程序名称:friday

输入格式

包含整数 N 的一行。

示例输入(文件 friday.in)

20

输出格式

一行包含七个用空格分隔的整数。这些整数分别表示 13 日落在周六、周日、周一、周二、……、周五的次数。

示例输出(文件 friday.out)

36 33 34 33 35 35 34