旨在为小朋友们提供全面的学习材料,共同为等级考试做好准备。
添加小助手微信,回复【GESP三级2025.09_日历制作】,获取本题源代码。
【提交】
https://www.luogu.com.cn/problem/B4414
【问题描述】
小 A 想制作 年每个月的日历。他希望你能编写一个程序,按照格式输出给定月份的日历。
具体来说,第一行需要输出 MON TUE WED THU FRI SAT SUN,分别表示星期一到星期日。接下来若干行中依次输出这个月所包含的日期,日期的个位需要和对应星期几的缩写最后一个字母对齐。例如, 年 月 日是星期一,在输出九月的日历时, 号的个位 就需要与星期一 MON 的最后一个字母 N 对齐。九月的日历输出效果如下:
MON TUE WED THU FRI SAT SUN 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你能帮助小 A 完成日历的制作吗?
【输入描述】
一行,一个正整数 ,表示需要按照格式输出 年 月的日历。
【输出描述】
输出包含若干行,表示 年 月的日历。
【样例输入1】
9【样例输出1】
MON TUE WED THU FRI SAT SUN 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【样例输入2】
6【样例输出2】
MON TUE WED THU FRI SAT SUN 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【说明/提示】
对于所有测试点,保证 。
参考程序:
'''[GESP202509 三级] 日历制作https://www.luogu.com.cn/problem/B4414'''d = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]total = 0for i in range(1, 9): total += d[i]w = 1 + (7 - total % 7) # 计算1月1日是星期三m = int(input())print("MON TUE WED THU FRI SAT SUN")total = 0for i in range(1, m): total += d[i]w = (w + total % 7) % 7if w == 0: w = 7# 输出星期一之前的空白week = [" "] * (w - 1)for i in range(1, d[m] + 1):# week中已有7个成员,则输出if len(week) == 7: print(" ".join(week)) week = [f"{i:3d}"] # 保存当前日期else: week.append(f"{i:3d}") # 将当前日期存入week# 如果week还有成员,则输出if len(week) != 0: print(" ".join(week))青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
