注意点
(1)只需枚举年份以缩短时间复杂度
(2)闰年判定及二月天数的修改
def f(year: int) -> None: # 修改 2 月的天数
months[2] = 29
if year % 400 == 0:
return
if year % 4 == 0 and year % 100 != 0:
return
months[2] = 28
return
months = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
start_date = input()
end_date = input()
start_year = int(start_date[ : 4])
end_year = int(end_date[ : 4])
ans = 0
for year in map(str, range(start_year, end_year + 1)):
date = year + year[ : : -1]
# 只需判定 date 是否为合法的日期
if date < start_date or date > end_date: # 在规定范围内
continue
month = int(date[4 : 6])
day = int(date[6 : 8])
f(int(year)) # 修改天数
if 1 <= month <= 12 and 1 <= day <= months[month]:
ans += 1
print(ans)