解题思路:
采用循环,数据较大。不建议。
直接构造回文日期,可以知道每年最多有一个回文日期。进行查找即可。
注意事项:
参考代码:
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分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复