喃梦物语


私信TA

用户名:uq_88529018583

访问量:3331

签 名:

艾小鹿? 习之澜?

等  级
排  名 332
经  验 5295
参赛次数 0
文章发表 116
年  龄 0
在职情况 学生
学  校 阳光学院
专  业 数据科学与大数据技术

  自我简介:

法1:回文常用法,126ms

最简单易懂,最常用,最高效

#对于所有评测用例,10000101 ≤ N ≤ 89991231,保证N 是一个合法日期的8位数表示。

 

n = int(input())

def fin1(n):

    for a in range(1,10):  #题目限制范围1-9

        for b in range(0,4): #日01-->31可选0,1,2,3

            for c in range(0,10): #0-->9

                for d in range(0,2): #月01-->12可选0,1

                    if d==c==0 or a==b==0: #重要

                        continue

                    e = ''.join(list(map

(str,[a,b,c,d,d,c,b,a])))

                    if e[::-1]==e and n<int(e):

                         return int(e)

def fin2(n):

    for a in range(1,10):

        for b in range(0,4):

            for c in range(0,10):

                for d in range(0,2):

                    e = ''.join(list(map

(str,[a,b,c,d,d,c,b,a])))

                    if all([a==c,d==b,n<int(e)]):

                        return int(e)

 

print('%d\n%d'%(fin1(n),fin2(n)))

 

 

 

#法2:较难懂,不是常用回文法,但是高效,149ms

a=int(input())

b=a//10000

c=a%10000

k=0

days=[0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

str8=str(a)

 

for i in range(b,9300):

    f=i//100

    q=(f%10)*10+(f//10)

    g=i%100

d=(g%10)*10+(g//10)

 

    if(0<d<=12 and q<=days[d] ):

        str1=str(i)

        str2=str1[::-1]

        str3=str1[:2]

        str4=str1[2:4]

        str5=str2[:2]

        str6=str2[2:4]

        str7=str1+str2

 

        if(k==0 and str7!=str8):

            print(str1+str2)

            k+=1

 

        if(str3==str4 and str5==str6 and str4==str5[::-1] and str7!=str8):

            print(str3+str4+str5+str6)

            break


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区