蓝桥杯 试题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,蓝桥官网都是不错的


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


目录
相关文章
|
4月前
|
调度 Python
Python 日期
Python 日期
40 0
|
1月前
|
Python
【Leetcode刷题Python】234.回文链表
两种判断链表是否为回文的方法:使用栈和拆分为两个链表后反转对比,并给出了相应的Python代码实现。
15 0
|
2月前
|
存储 Python
Python之日期和时间包datetime的使用
1、基本定义 1.1 时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数(或总毫秒数)。 网上有很多时间戳在线转换工具,可以自行计算验证。
|
1月前
|
Python
【Python】计算两个日期相差天数
使用Python计算两个日期相差天数
37 0
|
3月前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
3月前
|
Python
Python实践周 A卷 试题(不印刷)
Python实践周 A卷 试题(不印刷)
19 1
|
3月前
|
存储 SQL 数据挖掘
Python 日期表制作
Python 日期表制作
42 4
|
3月前
|
Python Unix Windows
Python 日期和时间
Python 日期和时间
|
4月前
|
Python
Python时间和日期
Python时间和日期
|
4月前
|
Python
Python日期与时间处理机制
Python日期与时间处理机制
38 0