sunflower758 2022-02-23 23:19 采纳率: 86.5%
浏览 138
已结题

python解决回文日期问题

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

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

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

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

输入描述
输入包含一个八位整数 NN,表示日期。

对于所有评测用例,10000101 \leq N \leq 8999123110000101≤N≤89991231,保证 NN 是一个合法日期的 8 位数表示。

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

输入输出样例
示例
输入

20200202
copy
输出

20211202
21211212
copy
运行限制
最大运行时间:1s
最大运行内存: 256M

然后有的答案是

import os
import sys
import datetime
# 请在此输入您的代码
date=input()
y=int(date[0:4]) # 将输入的日期转化为年月日的形式
m=int(date[4:6])
d=int(date[6:])
dd=datetime.date(y,m,d) # 将y,m,d转化为日期格式
flag=True # 输出一次回文日期
for i in range(9999999):
  dd=dd+datetime.timedelta(days=1)  # 日期增加1天
  strdd=str(dd).replace('-','') # 将日期转换为字符串的形式并将其中的-符号去掉
  if strdd==strdd[::-1]:
    if flag:
      print(strdd)
      flag=False
    if strdd[0]==strdd[2]==strdd[-1]==strdd[-3] and strdd[1]==strdd[3]==strdd[-2]==strdd[-4] :
      print(strdd)
      break

我不理解为什么它的循环是9999999,万一没有怎么办

  • 写回答

1条回答 默认 最新

  • 於黾 2022-02-24 08:11
    关注

    9999999代表的是天
    天不是10进制的
    换算成年大概是27397年(按每年365天算)
    每千年至少都有个回文日期,所以2万多年里肯定能找到答案,不可能找不到的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)