题目来源 百练 打印月历
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给定年月,打印当月的月历表。
输入
- 输入为一行两个整数,第一个整数是年份year(1900 ≤ year ≤ 2099),第二个整数是月份month(1 ≤ month ≤ 12),中间用单个空格隔开。 输出
-
输出为月历表。月历表第一行为星期表头,如下所示:
Sun Mon Tue Wed Thu Fri Sat
其余各行一次是当月各天的日期,从1日开始到31日(30日或28日)。
日期数字应于星期表头右对齐,即各位数与星期表头相应缩写的最后一个字母对齐。日期中间用空格分隔出空白。 样例输入
-
2006 5
样例输出
-
Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
提示
-
闰年判断方法:能被4整除但不能被100整除,或者能被400整除。
1900年1月1日是周一。
思路
日期类问题固有模板,以0年1月1日为出发点,计算每个日期到此的天数,由此可以计算出两个日期差了多少天。计算星期几用相隔天数加上已知日期的星期模7,如,1900年1月1日是周一,即
( 某 年 某 月 1 日 − 1900.1.1 + 1 m o d 7 + 7 ) m o d 7 (某年某月1日 - 1900.1.1 + 1 mod 7 + 7) mod 7 (某年某月1日−1900.1.1+1mod7+7)mod