回文日期(python) |
您所在的位置:网站首页 › 20200202特殊日子的简短语录 › 回文日期(python) |
题目描述 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输出 2021120221211212 代码示例import osimport sysimport datetime # python中的日期库提供多种日期和时间表达式# 请在此输入您的代码st = input() # 输入合法的日期y = int(st[:4]) # 取出日期中的年份m = int(st[4:6]) # 取出月份d = int(st[6:]) # 取出日份flag = True # 用来判断结束date = datetime.date(y, m, d) # 检查输入的日期是否合规for i in range(9999999): # 通过for循环来查找回文日期,range后面的数字代表将要循环的次数但不一定是必须进行的次数 date = date + datetime.timedelta(days=1) # datatime.timedelata函数可按日期的规范增加天数 date_str = str(date).replace('-', '') # 将日期中间的'-'去掉,方便后面的比较 if date_str[:] == date_str[::-1]: # str[:]代表的是正序输出,str[::-1]代表的是倒序输出,两者比较是否为回文日期 if flag: # 题目要求的是输一次回文日期和一次ababbaba型的,则用布尔类型来控制输出次数 print(date_str) flag = False # 若输出一次后,使flag为False,则这个if语句将不再执行 if date_str[0] == date_str[2] == date_str[5] == date_str[7] and \ date_str[1] == date_str[3] == date_str[4] == date_str[6]: # 判断回文日期是否满足ababbaba型 print(date_str) break # 若满足则结束循环[可参考kpython中字符截取-1]、[:-1]、[::-1]、[n::-1]等使用方法的详细讲解(建议留存) - @ 小浩 - 博客园 (cnblogs.com) 可参考 蟒蛇 |datetime.timedelta() 函数 - GeeksforGeeks datetime.date(year, month, day): year : 表示年,范围[MINYEAR, MAXYEAR],即[1, 9999] month : 表示月,范围[1, 12] day :一月中第几天,最大值根据给定的year,month参数来决定。例如闰年2月份有29天 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |