【蓝桥杯】43693.日期问题
题目描述
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入描述
一个日期,格式是 “AA/BB/CC” (0≤A,B,C≤9)。
输出描述
输出若干个不相同的日期,每个日期一行,格式是 “yyyy−MM−dd”。多个日期按从早到晚排列。
输入输出样例
示例
输入:
02/03/04
输出:
2002-03-04
2004-02-03
2004-03-02
题目分析
比较简单,无非就是分情况讨论而已。第一种情况:"年 / 月 / 日"的格式;第二种情况:"月 / 日 / 年"的格式;第三种情况:"日 / 月 / 年"的格式;
年份的区间在1960年至2059年,跨度100年,其中 y e a r year year >= 60的,是19开头的年份, y e a r year year < 60的,是20开头的年份;月份的区间在01月到12月;日期的区间在01日到31日。根据输入的字符串,做拆分之后,寻找可能的组合即可。
但是有几个限制规则需要注意:
- 2月没有30日和31日,闰年可以有29日,不是闰年只有01-28日。
- 对于 4、6、9、11 月的天数不能超过 30 天。
代码实现
感谢 @练洋洋 同学提供的代码。不过在这个版本的代码中没有判断闰年和判断单双月最后一天的功能。
import os
import sys
import datetimedef is_valid_date(year, month, day):"""此函数用于判断输入的年、月、日是否为有效的日期,并检查是否在 1960 年 1 月 1 日至 2059 年 12 月 31 日之间:param year: 年份:param month: 月份:param day: 日期:return: 若为有效日期且在指定范围内返回 True,否则返回 False"""try:# 使用 datetime.date 类尝试创建日期对象date = datetime.date(year, month, day)# 检查日期是否在 1960 年 1 月 1 日至 2059 年 12 月 31 日之间if datetime.date(1960, 1, 1) <= date <= datetime.date(2059, 12, 31):return Trueelse:return False# 若输入的年、月、日组合不合法会引发 ValueError 异常except ValueError:return False# 从标准输入读取日期字符串,并使用 map 函数将其按 / 分割并转换为整数存储在 a, b, c 中
a, b, c = map(int, input().split('/'))
# 存储满足条件的日期元组列表
dates = []# 假设日期格式为年/月/日
if 1 <= b <= 12 and 1 <= c <= 31:# 如果年份前两位大于等于 60,则年份是 19xx 年if a >= 60:# 调用 is_valid_date 函数判断日期是否有效if is_valid_date(1900 + a, b, c):dates.append((1900 + a, b, c))# 否则年份是 20xx 年else:if is_valid_date(2000 + a, b, c):dates.append((2000 + a, b, c))# 假设日期格式为月/日/年
if 1 <= a <= 12 and 1 <= c <= 31:# 对年份的处理,根据 c 的大小判断是 19xx 年还是 20xx 年if c >= 60:if is_valid_date(1900 + c, a, b):dates.append((1900 + c, a, b))else:if is_valid_date(2000 + c, a, b):dates.append((2000 + c, a, b))# 假设日期格式为日/月/年
if 1 <= a <= 31 and 1 <= b <= 12:# 对年份的处理,根据 c 的大小判断是 19xx 年还是 20xx 年if c >= 60:if is_valid_date(1900 + c, b, a):dates.append((1900 + c, b, a))else:if is_valid_date(2000 + c, b, a):dates.append((2000 + c, b, a))# 对 dates 列表去重
dates = list(set(dates))
# 对日期列表进行排序,排序依据是元组中的元素,即年、月、日
dates.sort()
# 遍历排序后的日期列表,将其按照指定格式输出
for date in dates:print('{:04d}-{:02d}-{:02d}'.format(date[0], date[1], date[2]))
修改之后的代码,加入了非闰年天数不超过28天以及部分月份天数不能超过 30 天的限制,要更加合理一些:
import os
import sys
import datetimedef is_valid_date(year, month, day):"""此函数用于判断输入的年、月、日是否为有效的日期,并检查是否在 1960 年 1 月 1 日至 2059 年 12 月 31 日之间:param year: 年份:param month: 月份:param day: 日期:return: 若为有效日期且在指定范围内返回 True,否则返回 False"""# 定义大月的月份集合big_months = {1, 3, 5, 7, 8, 10, 12}# 定义小月的月份集合small_months = {4, 6, 9, 11}try:if month == 2:# 判断是否为闰年if (year % 4 == 0 and year % 100!= 0) or (year % 400 == 0):if 1 <= day <= 29:date = datetime.date(year, month, day)if datetime.date(1960, 1, 1) <= date <= datetime.date(2059, 12, 31):return Trueelse:return Falseelse:if 1 <= day <= 28:date = datetime.date(year, month, day)if datetime.date(1960, 1, 1) <= date <= datetime.date(2059, 12, 31):return Trueelse:return Falseelif month in big_months:if 1 <= day <= 31:date = datetime.date(year, month, day)if datetime.date(1960, 1, 1) <= date <= datetime.date(2059, 12, 31):return Trueelse:return Falseelif month in small_months:if 1 <= day <= 30:date = datetime.date(year, month, day)if datetime.date(1960, 1, 1) <= date <= datetime.date(2059, 12, 31):return Trueelse:return Falseelse:return Falseexcept ValueError:return Falsedef main():# 从标准输入读取日期字符串,并使用 map 函数将其按 / 分割并转换为整数存储在 a, b, c 中a, b, c = map(int, input().split('/'))# 存储满足条件的日期元组列表dates = []# 假设日期格式为年/月/日if 1 <= b <= 12 and 1 <= c <= 31:# 如果年份前两位大于等于 60,则年份是 19xx 年if a >= 60:# 调用 is_valid_date 函数判断日期是否有效if is_valid_date(1900 + a, b, c):dates.append((1900 + a, b, c))# 否则年份是 20xx 年else:if is_valid_date(2000 + a, b, c):dates.append((2000 + a, b, c))# 假设日期格式为月/日/年if 1 <= a <= 12 and 1 <= c <= 31:# 对年份的处理,根据 c 的大小判断是 19xx 年还是 20xx 年if c >= 60:if is_valid_date(1900 + c, a, b):dates.append((1900 + c, a, b))else:if is_valid_date(2000 + c, a, b):dates.append((2000 + c, a, b))# 假设日期格式为日/月/年if 1 <= a <= 31 and 1 <= b <= 12:# 对年份的处理,根据 c 的大小判断是 19xx 年还是 20xx 年if c >= 60:if is_valid_date(1900 + c, b, a):dates.append((1900 + c, b, a))else:if is_valid_date(2000 + c, b, a):dates.append((2000 + c, b, a))# 对 dates 列表去重dates = list(set(dates))# 对日期列表进行排序,排序依据是元组中的元素,即年、月、日dates.sort()# 遍历排序后的日期列表,将其按照指定格式输出for date in dates:print('{:04d}-{:02d}-{:02d}'.format(date[0], date[1], date[2]))if __name__ == "__main__":main()
相关文章:
【蓝桥杯】43693.日期问题
题目描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用…...
opengrok_windows_多工程的同步
多工程的目录 工程代码下载和log配置 工程代码下载 在每个工程的src目录下,下载工程代码,以下载pulseaudio的代码为例。 git clone gitgithub.com:pulseaudio/pulseaudio.git log配置文件 拷贝D:\opengrok\opengrok-…...
Redis的安装和使用--Windows系统
Redis下载地址: windows版本readis下载(GitHub): https://github.com/tporadowski/redis/releases (推荐使用) https://github.com/MicrosoftArchive/redis/releases 官网下载(无Windows版本…...
【odbc】odbc连接kerberos认证的 hive和spark thriftserver
hive odbc驱动,以下两种都可以 教程:使用 ODBC 和 PowerShell 查询 Apache HiveHive ODBC Connector 2.8.0 for Cloudera Enterprise spark thriftserver本质就是披着hiveserver的外壳的spark server 完成kerberos认证: (1)可以…...
亚博microros小车-原生ubuntu支持系列:1 键盘控制
背景:电脑配置不太行,我在ubuntu再运行vmware,里面运行亚博官方的虚拟机镜像ubuntu,系统很卡。基本上8G内存给打满了。还是想把亚博官方的代码迁移出来,之前售后就说除了官方镜像虚拟机,需要自己摸索迁移。…...
【Linux】利用‘shell脚本’快速查看服务的运行情况
一、脚本目的 为了方便查看服务的运行情况,特此写了一个shell脚本,这样就很方便获取,查看如nginx、mysql等服务的运行状态、监听端口状态、防火墙、端口开放状态等。 二、shell脚本源代码 #!/bin/bash SCRIPTPATH$(cd "$(dirname $0)…...
[2025分类时序异常检测指标R-AUC与VUS]
梳理了一下分类中常见的指标,这些指标与时序异常检测中新提出的A-RUC与VUS之间的关系 真正例(True Positive,TP): 被正确识别为正样本的数量。真负例(True Negative,TN): 被正确识别为负样本的数量。假正例(False Positive ,FP): 被错误识为正样本数量假负例(Fals…...
设计模式之结构型模式
在软件开发的世界里,设计模式是前辈们智慧的结晶,它们为我们提供了通用的解决方案来应对各种常见的软件设计问题。今天,我们深入探讨设计模式中的结构型模式,并用 Java 语言来实现它们。 什么是结构型模式 结构型模式主要关注如…...
Spring Boot中的404错误:原因、影响及处理策略
Spring Boot中的404错误:原因、影响及处理策略 在Web开发过程中,404错误是一个常见的HTTP状态码,表示“未找到”资源。在Spring Boot项目中,尽管它以其简化的配置和快速的开发速度著称,但开发者仍可能遇到404错误。本…...
网络协议如何确保数据的安全传输?
网络协议作为计算机网络通信的基石,其设计不仅旨在实现数据的有效传输,更在于确保数据在传输过程中的安全性。对于网络协议如何保障数据安全传输,是很多企业和网络IT部门的重点,本文将从多方面概述相关方法。 加密与解密机制 1. …...
Python绘制数据地图-MovingPandas
MovingPandas 是一个用于时空数据分析的 Python 库,它扩展了 Pandas 和 GeoPandas,使得处理和分析带有时间戳的地理数据变得更加方便。虽然 MovingPandas 本身不直接提供数据可视化功能,但你可以结合其他库如 matplotlib、folium 或 plotly 来…...
鸿蒙子组件根据数据,刷新item Ui的规范
鸿蒙 子组件列表中,有多个isSelect,父组件只用一个state类型的isSelect,就可以将它们关联起来,如下: isLike:item1.isPraise?!this.isLike:this.isLike, 子组件想要数据变化,UI随着更新,就得…...
使用 Flask 构建视频转 GIF 工具
使用 Flask 构建视频转 GIF 工具 在前几日的文章当中,我介绍了如何使用 Python 脚本将视频转化为 GIF 动画,为了更好、更方便的进行操作,在这篇博客中,我将介绍使用 Flask 框架创建一个简单的 Web 应用程序,该应用程序…...
基于SpringBoot+Vue的智慧动物园管理系统的设计与实现
获取源码:基于SpringBootVue智慧动物园系统设计与实现: 后台和用户前台。后台包括首页、员工管理、考勤管理、部门管理、角色管理、审核管理、动物管理、演出管理、园区管理、园区设施维修、饲养管理、行为观察管理、疫苗管理、看护管理、个人中心、票务管理、收入管…...
“深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手
TCP(传输控制协议)的三次握手和四次挥手是TCP连接建立和释放的过程。 一、TCP三次握手 TCP三次握手是为了建立可靠的连接,确保客户端和服务器之间的通信能力。具体过程如下: 第一次握手:客户端向服务器发送一个带有…...
【初阶数据结构】探索数据的多米诺链:单链表
文章目录 1.链表1.1 概念及结构1.2 分类 2.单链表接口实现2.1 单链表节点创建2.2 单链表打印2.3 单链表尾插2.4 单链表头插2.5 单链表尾删2.6 单链表头删2.7单链表查找2.8 单链表在pos位置插入x2.8.1 pos前2.8.2 pos后 2.9单链表在pos位置删除x2.9.1 pos前2.9.2 pos后 2.2.10 单…...
我的创作纪念日——我与CSDN一起走过的365天
目录 一、机缘:旅程的开始 二、收获:沿路的花朵 三、日常:不断前行中 四、成就:一点小确幸 五、憧憬:梦中的重点 一、机缘:旅程的开始 最开始开始写博客是在今年一二月份的时候,也就是上一…...
w-form-select 组件中 分析 自定义属性 和 el-select 自带属性 的对比表格
以下是该组件中 自定义属性 和 el-select 自带属性 的对比表格: 属性/功能自定义el-select 自带说明label✔️❌自定义属性,用于设置表单项的标签。prop✔️❌自定义属性,用于表单验证时的字段名。labelWidth✔️❌自定义属性,用…...
【蓝桥杯选拔赛真题63】C++奇数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
目录 C++奇数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C++奇数 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 给定两个正整数N和M(10≤N<M≤10000),请找出N到M…...
Android 存储进化:分区存储
} 在写入存储之前,需要知道设备有多少空间可用,不够的话会抛出异常。不过现在的智能设备内存也是比较大的,这部分可以参考Google 查询可用空间 2.1 内部存储空间 打开Android studio的 Device File Explorer时,可以看到应用的内部…...
NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
问题描述与处理策略 1、问题描述 npm warn cli npm v10.9.2 does not support Node.js v18.16.1. This version of npm supports the following node versions: ^18.17.0 || >20.5.0. You can find the latest version at https://nodejs.org/.# 翻译 npm warn cli npm v1…...
docker离线安装及部署各类中间件(x86系统架构)
前言:此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本:docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面,这里放在…...
redis 分布式方案
文章目录 前言一、主从复制1、主从配置2、建立连接3、数据同步3.1、全量同步3.2、全量同步配置3.3、 增量同步3.4、 增量同步配置 二、redis sentinel1、主要功能2、sentinel配置3、高可用3.1、故障发现3.2、故障转移3.2.1、选举sentinel进行故障转移3.2.2、选举从节点升级成主…...
# [0114] Task01 《数学建模导论》P1 解析几何与方程模型
链接:https://www.datawhale.cn/activity/124 整理的相关代码库 GitHub 页面链接 绪论 姜启源:“数学建模就是建立数学模型解决实际问题” 本质还是解应用题,只是曾经的“小明买糖”变成了如今的“嫦娥探月”。 SEIR 模型,也…...
PCM5142集成32位384kHz PCM音频立体声114dB差分输出DAC编解码芯片
目录 PCM5142 简介PCM5142功能框图PCM5142特性 参考原理图 PCM5142 简介 PCM514x 属于单片 CMOS 集成电路系列,由立体声数模转换器 (DAC) 和采用薄型小外形尺寸 (TSSOP) 封装的附加支持电路组成。PCM514x 使用 TI 最新一代高级分段 DAC 架构产品,可实现…...
【HarmonyOS NEXT】碰一碰开发分享
关键词:鸿蒙、碰一碰、systemShare、harmonyShare、Share Kit 华为分享新推出碰一碰分享,支持用户通过手机碰一碰发起跨端分享,可实现传输图片、共享wifi等。我们只需调用系统 api 传入所需参数拉起对应分享卡片模板即可,无需对 U…...
pytest+playwright落地实战大纲
前言 很久没有更新博客,是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结,开个帖子介绍下这门课程(硬广, o(〃^▽^〃)o) 课程放在CSDN学习频道, 欢迎关注~ PyTestPl…...
HTML<center>标签
HTML5不支持。 <center>标签在HTML4中用于使文本居中对齐。 用什么来代替呢? 例子 居中对齐文本(使用 CSS): <html> <head> <style> h1 {text-align: center;} p {text-align: center;} div {text-a…...
【部署】将项目部署到云服务器
目录 1.获得服务器 2.连接到云服务器 3.配置环境 3.1.Java(运行后端所需) 3.2.MySQL数据库 3.3.Nginx(运行前端所需) 3.4. Node.js(构建前端所需) 4.打包项目 4.1.打包后端项目 4.2.打包前端项目…...
微软宣布Win11 24H2进入新阶段!设备将自动下载更新
快科技1月19日消息,微软于1月16日更新了支持文档,宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布,此前为可选升级,如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示:“运行Wi…...
傅里叶变换在语音识别中的关键作用
在语音识别中,傅里叶变换起着至关重要的作用,主要体现在以下几个方面: 一、时域到频域的转换 语音信号的特点 语音信号是一种时域信号,它随时间变化。例如,当我们说话时,声带的振动产生声波,这…...
面试-业务逻辑2
应用 给定2个数组a、b,若a[i] b[j],则记(i,j)为一个二元数组,求具体的二元数组及其个数。 实现 a input("请输入数组a的元素个数:") # print(a) a_list list(map(int, input("请输入数组a的元素,…...
【20】Word:小许-质量管理-论文❗
目录 题目 NO1.2.3.4.5 NO6.7 NO8 NO9 NO10.11 题目 NO1.2.3.4.5 另存为“Word.docx”文件在考生文件夹下,F12Fn是另存为的作用布局→页面设置对话框→纸张:大小A4→页边距:上下左右不连续ctrl选择除表格外的所有内容→开始→字体对…...
Python数据分析案例70——基于神经网络的时间序列预测(滞后性的效果,预测中存在的问题)
背景 这篇文章可以说是基于 现代的一些神经网络的方法去做时间序列预测的一个介绍科普,也可以说是一个各种模型对比的案例,但也会谈一谈自己做了这么久关于神经网络的时间序列预测的论文,其中一些常见的模式及它们存在的问题以及效果&#x…...
Kotlin Bytedeco OpenCV 图像图像54 透视变换 图像矫正
Kotlin Bytedeco OpenCV 图像图像54 透视变换 图像矫正 1 添加依赖2 测试代码3 测试结果 在OpenCV中,仿射变换(Affine Transformation)和透视变换(Perspective Transformation)是两种常用的图像几何变换方法。 变换方…...
PyTorch使用教程(11)-cuda的使用方法
1. 基本概念 CUDA(Compute Unified Device Architecture)是NVIDIA开发的一种并行计算平台和编程模型,专为图形处理器(GPU)设计,旨在加速科学计算、工程计算和机器学习等领域的高性能计算任务。CUDA允许开发…...
微软开源AI Agent AutoGen 详解
AutoGen是微软发布的一个用于构建AI Agent系统的开源框架,旨在简化事件驱动、分布式、可扩展和弹性Agent应用程序的创建过程。 开源地址: GitHub - microsoft/autogen: A programming framework for agentic AI 🤖 PyPi: autogen-agentchat Discord: https://aka.ms/auto…...
上位机工作感想-2024年工作总结和来年计划
随着工作年限的增增长,发现自己越来越不喜欢在博客里面写一些掺杂自己感想的东西了,或许是逐渐被工作逼得“成熟”了吧。2024年,学到了很多东西,做了很多项目,也帮别人解决了很多问题,唯独没有涨工资。来这…...
js: 区分后端返回数字是否为null、‘-’ 或正常number类型数字。
问: 这是我的代码<CountTo v-if!isNaN(Number(item.num))> <span v-else>{{item.num}}</span> 我希望不是null的时候走countTo,是null的时候直接<span>{{item.num}}</span>显示 回答: 最终结果: …...
C#中字符串方法
字符串属性:Lenght 长度比最大索引大1 string str "frerfgd"; 1.可以通过索引,获取字符串中的某一个字符,下标“0,1.......” Console.WriteLine(str[0]);//f Console.WriteLine(str[1]);//r //Console.WriteLine(s…...
flutter在使用gradle时的加速
当我使用了一些过时的插件的时候,遇到了一些问题 比如什么namespace 问题等,因为有些插件库没有更新了,或者最新版本处于测试阶段 于是我就删除这些旧插件(不符合我要求的插件) 于是根据各论坛的解决方法去做了以下的工作 1:项目中删除了这…...
SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——主目录(持续更新)
随着公司业务的增加,公司需要一个javapython人工智能相互配合架构,正常网站业务用java来做,而ai,例如电价预测等回归任务,以及大模型预测全网负荷,新能源出力等任务,使用python通过fastapi暴露接…...
【GIS操作】使用ArcGIS Pro进行海图的地理配准(附:墨卡托投影对比解析)
文章目录 一、应用场景二、墨卡托投影1、知识点2、Arcgis中的坐标系选择 三、操作步骤1、数据转换2、数据加载3、栅格投影4、地理配准 一、应用场景 地理配准是数字化之前必须进行的一项工作。扫描得到的地图数据通常不包含空间参考信息,需要通过具有较高位置精度的…...
C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net/beijinghorn/article/details/123350910 C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程https://blog.csdn.net/beijinghorn/article/detail…...
使用 ChatGPT 生成和改进你的论文
文章目录 零、前言一、操作引导二、 生成段落或文章片段三、重写段落四、扩展内容五、生成大纲内容六、提高清晰度和精准度七、解决特定的写作挑战八、感受 零、前言 我是虚竹哥,目标是带十万人玩转ChatGPT。 ChatGPT 是一个非常有用的工具,可以帮助你…...
Unity2021.3.13崩溃的一种情况
如果出现如下的报错,可能是软件冲突的原因。自己的原因是使用f.lux这款软件似乎和Unity相互冲突,出现下面报错。 错误信息如上图...
通过ssh连接debian
使用方法 ssh usernameipaddress [inputpasswd]root用户默认无法由ssh连接, 可以通过修改配置 sudo vim /etc/ssh/sshd_config去掉PermitRootLogin前的‘#’,并修改为 PermitRootLogin yes 重启sshd服务 sudo systemctl restart sshd参考 https://linuxconfig.or…...
Transformer 与注意力机制原理说明与面试笔试题
文章大纲 注意力机制不同 种类的注意力机制Encoder Decoder 框架自注意力自注意力机制概述**基本原理****优点与应用****自注意力与多头注意力的关系****总结**多头注意力**多头注意力机制概述****基本原理****计算过程****多头注意力的优势****多头自注意力与多头注意力的区别…...
C语言之装甲车库车辆动态监控辅助记录系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 (一)…...
先进制造aps专题二十七 西门子opcenter aps架构分析
欧美的商业aps,主要就是sap apo,西门子opcenter aps,达索quintiq 从技术的层面,西门子aps是不如sap apo的,但是西门子aps是西门子数字化工厂产品的核心,有很多特色,所以分析 西门子aps主要分计划器和排产器两个部分 计…...