蓝桥杯 试题G 回文日期 Python 枚举法

简介: 蓝桥杯 试题G 回文日期 Python 枚举法

话不多说 上满分证明:


image.png



代码设计思路:根据测样的范围 枚举出大致范围内所有的回文数

遍历它 找到第一个大于N的数字 输出


找到第一个大于N且符合ABABBABA的数字(B!=A) 输出


思路非常简单


现在关键在于 我们要怎么枚举呢?


首先 日期一定要合法 有以下标准:大月不超过31天 小月不超过30天


闰年(可以被400整除的年份)2月不超过29天 非闰年2月不会超过28天




由于回文数左右对称 我们需要关注前4位


其次根据数据范围10000101<=N<=89991231


如果N=10000101 答案一定大于10000000


如果N=89991231 答案一定小于99999999


因此对于前4位 我们需要遍历(1000,9999)来创建合法的回文日期数的列表


答案一定落在列表这个里面


a=['01','02','03','04','05','06','07','08','09','10','11','12']#月份
b=['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']#日期
s=[]
for i in range(1000,9999):
    if str(i)[::-1][:2] in a and str(i)[::-1][2:] in b:
        s.append(str(i)+str(i)[::-1])
for i in s:#去除不合法二月日期
    if i[4:6]=='02':
        if int(i)%400!=0 and int(i[6:])>28:
            s.remove(i)
        if int(i)%400==0 and int(i[6:])>29:
            s.remove(i)
big=['01','03','05','07','08','10','12']
small=['02','04','06','09','11']
for i in s:#去除不合法大小月
    if i[4:6] in small and int(i[6:])>30:
        s.remove(i)
    if i[4:6] in big and int(i[6:])>31:
        s.remove(i)
N=int(input())
for i in s:
    if int(i)>N:
        print(i)
        break
for j in s:
    if int(j)>N and j[:2]==j[2:4] and j[0]!=j[1]:
        print(j)
        break


最近疫情有点严重减少出门 在家好好刷题


备战蓝桥杯 acwing,leedcode,蓝桥官网都是不错的


      乾坤未定 你我皆是蓝桥黑马


目录
相关文章
|
2月前
蓝桥杯真题time模块详解 | 顺子日期 星期一
蓝桥杯真题time模块详解 | 顺子日期 星期一
|
2月前
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
143 0
|
2月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
128 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2月前
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
50 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
2月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
52 0
|
4月前
|
Python
【Leetcode刷题Python】234.回文链表
两种判断链表是否为回文的方法:使用栈和拆分为两个链表后反转对比,并给出了相应的Python代码实现。
28 0
|
6月前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
6月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
58 2
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
115 0
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
88 0