回文日期题解

【问题描述】
2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按“yyyymmdd”的格式写成一个8位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。
有人表示20200202是“千年一遇”的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:20211202即2021年12月2日。
也有人表示20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约100年后就能遇到下一个ABABBABA型的回文日期:21211212即2121年 12月12日。算不上“千年一遇”,顶多算“千年两遇”。
给定一个8位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。

【输入格式】
输入包含一个八位整数N,表示日期。

【输出格式】

输出两行,每行1个八位数。第一行表示下一个回文日期,第二行表示下一个ABABBABA型的回文日期。

【样例输入】
20200202

【样例输出】

2021120221211212
【评测用例规模与约定】
对于所有评测用例,10000101 ≤N ≤89991231,保证N是一个合法日期的8位数表示

year=[]
data=[]
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,29):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,31):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,31):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,31):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,31):
    data.append(item)
year.append(data)
data.clear()
for item in range(1,32):
    data.append(item)
year.append(data)
def huiwuenjiance(strr):
    if strr[0]==strr[7] and strr[1]==strr[6] and strr[2]==strr[5] and strr[3]==strr[4]:
        return True

def abjiance(strr):
    if strr[0] == strr[7] and strr[1] == strr[6] and strr[2] == strr[5] and strr[3] == strr[4] and strr[0]==strr[2] and strr[5]==strr[7] and strr[1]==strr[3] and strr[4]==strr[6]:
        return True

num=int(input())
year_data=int(num/10000)
month_data=int((num-(year_data)*10000)/100)
day_data=num-year_data*10000-month_data*100
flag1=False
flag2=False
for item in range(year_data,10000000,1):
    for month in range(12):
        for day in range(len(year[month])):
            data=item*10000+(month+1)*100+day
            strr=str(data)
            if strr !=str(num):
                if huiwuenjiance(strr):
                   if not flag1:
                      anss1=strr
                      flag1=True
                      pass
                if abjiance(strr):
                   anss2=strr
                   flag2=True
                   pass
            if flag2 and flag1:
                break
                pass
        if flag2 and flag1:
            break
            pass
    if flag2 and flag1:
        break
        pass
print(anss1)
print(anss2)

很开心的一次模拟,一次就过了,虽然很暴力,但是过了全部样例真的承包了一天好心情
回文日期题解_第1张图片

你可能感兴趣的:(算法)