如果一个日期的日期以 1 结尾(1日、11日、21日、31日)且为星期一,则称这个日期为一好日期。 请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。 提示:1901 年 1 月 1 日是星期二。
时间: 2024-11-19 22:12:30 浏览: 60
首先,我们需要确定每个月有多少天,并考虑哪些特定的日子是一周的第一天,即星期一。我们知道:
- 普通年有365天,平年的2月份有28天,其余月份都有30天或31天。
- 跟着闰年规则,闰年有366天,其中2月份增加一天到29天。
- 每四年有一个闰年,但是每百年不闰,四百年再闰。
对于给定的区间从1901年1月1日至2024年12月31日,我们要注意以下点:
1. 这一时期包含了两个闰年:1904年(因为能被4整除)和2000年(因为能被400整除)。
2. 1901年不是闰年,而2024年恰逢闰年。
计算一好日期的总数,我们需要分别计算每个年份中的一月一日是星期几,然后看是否是星期一。我们可以逐个计算,或者使用一些日期处理技巧,例如计算出每个年份相对于1901年1月1日的总天数,加上额外的闰年天数,然后查看结果对7取余的结果对应于星期几。
由于这种计算涉及到一定的复杂性和迭代,手动完成这项任务可能会很繁琐,特别是考虑到闰年规则。更推荐使用编程语言中的日期库来进行这样的计算。让我们通过编程解决这个问题:
```python
import datetime
# 初始化起始日期和结束日期
start_date = datetime.date(1901, 1, 1)
end_date = datetime.date(2024, 12, 31)
# 计算所有日期并筛选出一好日期
good_dates = []
for year in range(start_date.year, end_date.year + 1):
for month in range(1, 13):
day = 1 if month != 2 else (29 if is_leap_year(year) else 28)
date = datetime.date(year, month, day)
if date.weekday() == 0: # 星期一
good_dates.append(date)
# 筛选出一好日期的数量
total_good_dates = len(good_dates)
is_leap_year = lambda y: y % 4 == 0 and (y % 100 != 0 or y % 400 == 0)
print(f"从1901年1月1日至2024年12月31日总共有 {total_good_dates} 个一好日期。")
阅读全文