import os
import sys
# 请在此输入您的代码
day = int(input())
for i in range(day+1,99999999):
i = str(i)
if int(i[4:6])<=12 and int(i[6:])<=30:
if str(i) == str(i)[::-1]:
print(i)
break
for i in range(day+1,99999999):
i = str(i)
if int(i[4:6])<=12 and int(i[6:])<=30:
if i[0] == i[2] == i[5] ==i[7] and i[1] == i[3] == i[4] == i[6]:
print(i)
break
时间复杂度太高,没必要把所有日子都拿出来比较,先构建回文日期和ABABBABA型日期要简单多了。
这里只需要考虑后四位,而且最后一位不能是0。总共只有342个日期,排序后找N后面第一个就好了。
# 回文日期
date = []
for i in (1,3,5,7,8,10,12):
for j in range(1,32):
if j%10:
d = f"{i:0>2}{j:0>2}"
date.append(d[::-1]+d)
for i in (4,6,9,11):
for j in range(1,30):
if j%10:
d = f"{i:0>2}{j:0>2}"
date.append(d[::-1]+d)
for j in range(1,30):
if j%10:
d = f"02{j:0>2}"
date.append(d[::-1]+d)
# ABABBABA型日期
date2 = []
for i in range(1,13):
if i%10:
d = f"{i:0>2}"*2
date2.append(d[::-1]+d)
你的算法应该有两个问题,
if 1 <= int(i[4:6]) <= 12 and 1 <= int(i[6:]) <= 31: