【蓝桥杯每日一练】-回文日期

一、问题

题目描述

2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按yyyymmdd”的式写成一个8位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202是“千年一遇”的特殊日子。对此小明很不认同,因为不到2 年之后就是下一个回文日期:20211202 即2021 年12 月2日

也有人表示 20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约100年后就能遇到下一个ABABBABA型的回文日期:21211212即 2121年12月 12日算不上“千年-遇”顶多算千年两遇”。

给定一个8位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。

输入描述

输入包含一个八位整数 N,表示日期。 对于所有评测用例,10000101<N<89991231,保证N 是一个合法日期的8位数表示。

输出描述

输出两行,每行1个八位数。第一行表示下一个回文日期,第二行表示下一个ABABBABA型的回文日期。

输入输出样例

输入

20200202

输出

20211202

21211212

二、python代码

import os  # 导入操作系统模块
import sys  # 导入系统模块
import datetime  # 导入datetime模块,用于处理日期和时间。

# 从用户输入获取一个字符串N,代表一个日期,格式为YYYYMMDD。
N=input()

# 将用户输入的字符串N转换为年、月和日的整数形式。
yy=int(N[0:4])
mm=int(N[4:6])
dd=int(N[6:])

# 使用datetime模块创建一个日期对象,格式为YYYY-MM-DD。
date=datetime.date(yy,mm,dd)

flag=True  # 初始化一个标志变量,用于控制是否打印第一个满足条件的日期。

# 从用户输入的日期开始,向后遍历9999999天。
for i in range(9999999):
  date=date+datetime.timedelta(days=1)  # 日期向后增加一天。
  strdate=str(date).replace("-",'')  # 将日期对象转换为字符串,并去掉"-"。
  
  # 如果字符串形式的日期等于其反转后的字符串,打印该日期。
  if strdate==strdate[::-1]:
    if flag:  # 如果这是第一个满足条件的日期,打印。
      print(strdate)
      flag=False  # 设置标志为False,表示已经打印过第一个满足条件的日期。
    # 如果日期的第1、2、3、4、5位或最后一位是相同的数字,并且第2、3、4位也相同,打印该日期。
    if strdate[0]==strdate[2]==strdate[5]==strdate[-1] and strdate[1]==strdate[3]==strdate[4]==strdate[-2]:
      print(strdate)
      break  # 找到一个满足条件的日期后,跳出循环。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值