AcWing 466. 回文日期
原题链接
简单
作者:
风平浪静_7
,
2023-02-10 11:34:31
,
所有人可见
,
阅读 135
dayList = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
timeStr = input()
endTime = int(input())
ans = 0
while int(timeStr) <= endTime:
if timeStr[0:4] == timeStr[-1:-5:-1]: # 是回文的
ans += 1
year = int(timeStr[:4])
month = int(timeStr[4:6])
day = int(timeStr[6:])
# 进行 “timeStr” 的修改 ==> 日期增加一天
if month == 12 and day == 31: # 十二月份的最后一天
timeStr = str(year + 1) + "0101" # 新年的第一天:1月1日
else:
if month == 2: # 在二月份时
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: # 闰年
if day <= 28:
timeStr = timeStr[:6] + "{:02d}".format(day + 1) # 更新日期
elif day == 29:
timeStr = f"{year}0301" # 更新日期为 3月1日
else: # 平年
if day <= 27:
timeStr = timeStr[:6] + "{:02d}".format(day + 1) # 更新日期:增加一天
elif day == 28:
timeStr = f"{year}0301" # 更新日期为 3月1日
else: # 除 二月份 之外的时间
if day < dayList[month - 1]: # 判断 year-month-day 中的 day 是否合法
timeStr = timeStr[:6] + "{:02d}".format(day + 1) # 更新日期:增加一天
elif day == dayList[month - 1]:
timeStr = timeStr[:4] + "{:02d}".format(month + 1) + "01" # 新月份的第一天:1日
print(ans)