解题思路:

采用循环,数据较大。不建议。

直接构造回文日期,可以知道每年最多有一个回文日期。进行查找即可。



注意事项:

参考代码:

s = input().strip()  
y = int(s[:4])  
  
a = 0  
b = 0  
aflag = 0  
bflag = 0  
while True:  
    temp = str(y)[::-1]  
    m = int(temp[:2])  
    d = int(temp[2:4])  
  
    if 1<= m <= 12:  
        if m == 2:  
            if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):  
                if 1<= d <=29:  
                    if not aflag:  
                        a = str(y)+temp  
                        if int(a) > int(s):  
                            aflag = 1  
                    if not bflag:  
                        if len(set(list(temp))) == 2 and temp[0] == temp[2] and temp[1] == temp[3]:  
                            b = str(y)+temp  
                            if int(b) > int(s):  
                                bflag = 1  
            else:  
                if 1 <= d <= 28:  
                    if not aflag:  
                        a = str(y)+temp  
                        if int(a) > int(s):  
                            aflag = 1  
                    if not bflag:  
                        if len(set(list(temp))) == 2 and temp[0] == temp[2] and temp[1] == temp[3]:  
                            b = str(y)+temp  
                            if int(b) > int(s):  
                                bflag = 1  
        elif m in (4,6,9,11):  
            if 1 <= d <= 30:  
                if not aflag:  
                    a = str(y)+temp  
                    if int(a) > int(s):  
                        aflag = 1  
                if not bflag:  
                    if len(set(list(temp))) == 2 and temp[0] == temp[2] and temp[1] == temp[3]:  
                        b = str(y)+temp  
                        if int(b) > int(s):  
                            bflag = 1  
        else:  
            if 1 <= d <= 31:  
                if not aflag:  
                    a = str(y)+temp  
                    if int(a) > int(s):  
                        aflag = 1  
                if not bflag:  
                    if len(set(list(temp))) == 2 and temp[0] == temp[2] and temp[1] == temp[3]:  
                        b = str(y)+temp  
                        if int(b) > int(s):  
                            bflag = 1  
    if aflag and bflag:  
        print(a)  
        print(b)  
        break  
    y = y + 1


点赞(0)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论