2023年14界蓝桥杯省赛“日期统计”题解

news2025/6/19 23:03:08

问题描述
小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示:

5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1 0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3

现在他想要从这个数组中寻找一些满足以下条件的子序列:

子序列的长度为 8;
这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且要求这个日期是 2023 年中的某一天的日期,例如 20230902,20231223。yyyy 表示年份,mm 表示月份,dd 表示天数,当月份或者天数的长度只有一位时需要一个前导零补充。
请你帮小蓝计算下按上述条件一共能找到多少个不同 的 2023 年的日期。对于相同的日期你只需要统计一次即可。

a = [5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7, 5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9, 2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3, 8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6, 1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3]

t = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 月份对应的天数
s = set() # 存储符合条件的日期

for i in range(100-7):
    if a[i] != 2:
        continue
    for j in range(i+1, 100-6):
        if a[j] != 0:
            continue
        for k in range(j+1, 100-5):
            if a[k] != 2:
                continue
            for l in range(k+1, 100-4):
                if a[l] not in [3, 4]:
                    continue
                for m in range(l+1, 100-3):
                    month = a[m] * 10 + a[m+1]
                    if month < 1 or month > 12:
                        continue
                    for n in range(m+2, 100-2):
                        day = a[n] * 10 + a[n+1]
                        if day < 1 or day > t[month]:
                            continue
                        date_str = "{:04d}{:02d}{:02d}".format(2023, month, day)
                        s.add(date_str) # 将符合条件的日期添加到集合中

# 输出符合条件的日期数量
print(len(s))
for date_str in s:
    print(date_str)
  1. 定义了一个名为 a 的列表,包含了 100 个数字;
  2. 定义了一个名为 t 的列表,包含了每个月的天数;
  3. 定义了一个名为 s 的集合,用于存储符合条件的日期;
  4. 使用 for 循环对 a 列表进行遍历,从第一个位置开始到第 94 个位置(如下计算,100-7=93);
  5. 每次循环判断当前位置是否为数字 2,若不是则跳过此次循环;
  6. 使用嵌套的 for 循环依次遍历 a[i+1:]、a[j+1:]、a[k+1:]、a[l+1:]、a[m+2:] 列表;
  7. 在循环中判断 a[j] 是否等于数字 0,a[k] 是否等于数字 2,a[l] 是否为 3 或 4,a[m] 和 a[m+1] 表示的月份是否为合法的月份,a[n] 和 a[n+1] 表示的日期是否在合法的范围内;
  8. 若以上所有条件都满足,则将当前日期添加到集合 s 中;
  9. 最后输出集合 s 的大小,即符合条件的日期数量。

先使用 for 循环遍历了 a 中从 l+1100-3 位置的所有元素。然后,将第 m 和 m+1 个位置上的数字通过乘以 10 相加,得到了一个两位数表示的月份。

接下来,使用 if 语句对这个月份进行判断。如果它小于 1 或大于 12,则说明这不是一个合法的月份,应该跳过此次循环,继续下一次循环。这一步的目的是为了减少后续的计算量,并且只保留在 1 到 12 范围内的合法月份。

总之,这段代码的作用是根据前面的条件判断,判断某个两位数字是否代表一个合法的月份,若否则跳过本次循环,进入下一次循环。

结果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 小型项目大全 41~45

四十一、幸运星 原文&#xff1a;http://inventwithpython.com/bigbookpython/project41.html 在这个碰运气游戏中&#xff0c;你掷骰子来收集星星。你掷得越多&#xff0c;你能得到的星星就越多&#xff0c;但是如果你得到三个头骨&#xff0c;你就失去了一切&#xff01;这款…

【网络编程】UDP

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录&#x1f3ef;一. UDP数据报套接字编程&#x1f3f0;二. 写一个 UDP 版本的 回显服务器-客户端.&#xff08;echo server&#xff09;&#x1f3ed;1. 服务器&#xff1a;&…

咖啡卷到现在,他们开始往里面掺北京豆汁了

咖啡卷到现在&#xff0c;他们开始往里面掺北京豆汁了0. 导读1. 人手一杯&#xff0c;果咖大势所趋2. 双倍成瘾&#xff1a;茶咖和酒咖被重点推荐3. 地方小吃融入咖啡&#xff0c;比如北京豆汁4. 炙手可热的云南咖啡豆5. 咖啡、户外和环保&#xff1a;绑定可持续6. 小结0. 导读…

vue - 【最新】简单快捷的 element ui 组件库的主题色更改,批量统一覆盖替换解决方法,无需npm装包。(适用于新手小白的方法,很简单)

效果图 最新解决方案,简单便捷且不用npm安装任何第三方包就能搞定。 原来的主题色是蓝色 ,可以通过本篇博客提供的方法,统一变成其他主题颜色,比如下面的紫色: 下面就是真实的运行效果,保证可行~ 这样就不用每个组件单独去写样式覆盖颜色了! 定制主

干雾抑尘系统的降尘工作原理

对于干雾抑尘系统&#xff0c;相信大家现在都不陌生&#xff0c;作为工业无组织排放粉尘治理的常用除尘产品&#xff0c;其有着传统喷雾降尘设备无法比拟的优势。今天我们就来了解下&#xff0c;干雾抑尘系统到底是什么&#xff1f;他的工作原理到底是怎样的呢&#xff1f; ​…

进程、线程、协程的区别

目录 1、什么是进程&#xff1f; 2、什么是线程&#xff1f; 3、什么是协程&#xff1f; 4、进程、线程、协程的区别 (1) 进程、线程的区别 (2) 线程、协程的区别 1、什么是进程&#xff1f; 简单来说&#xff0c;进程可以看做是加载到内存里的程序&#xff0c;实际上一…

Qt Quick - ColorDialog 颜色对话框

ColorDialog 颜色对话框使用总结一、概述二、实现的要点三、一些例子的合集1. 按钮点击修改按钮文字颜色一、概述 ColorDialog 就是Qt 提供的标准的颜色对话框。ColorDialog 允许用户选择颜色。 对话框最初是不可见的。你需要首先按需设置属性&#xff0c;然后将visible设置为…

前端 icon 方案该升级了

说到 icon&#xff0c;很多前端开发只能想到 iconfont&#xff0c;或者组件库中提供的那些图标&#xff0c;当然这对于绝大多数开发场景是够用的。 但要知道&#xff0c;iconfont 的方案其实是在 2016 年公开&#xff0c;到现在也已经有 6 年之久&#xff0c;它确实在这一段时…

【产品经理】为什么你画的流程图开发总说看不懂?

在做产品设计时&#xff0c;会碰到非常多的业务流程&#xff0c;当我们需要跟开发解释一个相对复杂的流程时&#xff0c;一个清晰的流程图&#xff0c;便非常重要了。 我们做产品设计的时候&#xff0c;会碰到非常多的业务流程&#xff0c;有简单的&#xff0c;有复杂的&#x…

「业务架构」需求工程——捕获与分析(第二部分)

从用户、客户和其他涉众那里生成系统需求的活动。可行性研究结束后&#xff0c;我们进入下一个阶段;抽取和分析。需求捕获和分析它是一个与客户和最终用户交互的过程&#xff0c;以查明领域需求、系统应该提供什么服务以及其他约束。领域需求反映了系统运行的环境&#xff0c;因…

HTML5 <del> 标签、HTML5 <dd> 标签

HTML5 <del> 标签 实例 一段带有已删除部分和新插入部分的文本&#xff1a; <p>My favorite color is <del>blue</del> <ins>red</ins>!</p> 尝试一下 浏览器支持 所有主流浏览器都支持 <del> 标签。 标签定义及使用说明 …

什么是设计模式?

文章目录01 | 概念02 | 要素03 | 分类04 | 总结“每一个模式描述了一个在我们周围不断重复发生的问题&#xff0c;以及问题的解决方案的核心。这样&#xff0c;你就能一次又一次地使用该方案而不必做重复劳动”。 设计模式的核心&#xff1a;提供了相关问题的解决方案&#xff…

机械硬盘提示格式化的常见原因|3种数据恢复方法

机械硬盘是电脑存储设备中的一种&#xff0c;它的存储容量比较大&#xff0c;通常采用机械运动的方式记录数据。 其内部结构由多个盘片和磁头组成&#xff0c;盘片层层叠放在一起并通过主轴转动&#xff0c;磁头则通过磁臂上下移动并接触盘片表面进行读写操作。但是在日常使用电…

如何用Golang处理每分钟100万个请求

用Golang处理每分钟100万个请求 转载请注明来源&#xff1a;https://janrs.com/9yaq 面临的问题 在我设计一个分析系统中&#xff0c;我们公司的目标是能够处理来自数百万个端点的大量POST请求。web 网络处理程序将收到一个JSON文档&#xff0c;其中可能包含许多有效载荷的集合…

Spring Boot基础学习之(十六):用户认证和授权

本次项目使用静态资源代码免费下载 https://download.csdn.net/download/m0_52479012/87679062?spm1001.2014.3001.5501 在日常的登录网页中&#xff0c;是怎么分辨那些用户是具有那种权限呢&#xff1f; 本次博客实现的功能是&#xff1a;哪些网页是谁有可以访问的&#xff…

进程状态概念详解!(7千字长文详解)

进程状态概念详解 文章目录进程状态概念详解进程状态为什么会有这些状态运行总结阻塞就绪/新建挂起阻塞和挂起的区别&#xff01;linux下的进程状态运行——R睡眠——S暂停——T关于号深度睡眠——D追踪暂停 ——t死亡——X僵尸——Z僵尸进程的危害总结孤儿进程——S状态进程优…

一位腾讯在职7年测试工程师的心声...

作为一个在腾讯工作7年的测试工程师&#xff0c;今天就来聊聊腾讯工作压力到底从何而来。 压力的开始&#xff1a;时间回到7年前&#xff0c;我人生中的第一份实习工作&#xff0c;是在腾讯公司做一个自动化测试工程师。当时的我可谓意气风发&#xff0c;想要大干一场&#xf…

SpringBoot 介绍

1.简介 SpringBoot最开始基于Spring4.0设计&#xff0c;是由Pivotal公司提供的框架。 SpringBoot发展史&#xff1a; 2003年Rod Johnson成立Interface公司&#xff0c;产品是SpringFramework2004年&#xff0c;Spring框架开源&#xff0c;公司改名为Spring Source2008年&…

[MAUI 项目实战] 手势控制音乐播放器(三): 动画

文章目录吸附动画确定位置平移动画回弹动画使用自定义缓动函数多重动画点击动画项目地址上一章节我们创建了手势容器控件PanContainer&#xff0c;它对拖拽物进行包装并响应了平移手势和点击手势。拖拽物现在虽然可以响应手势操作&#xff0c;但视觉效果较生硬&#xff0c;一个…

【ros2】ubuntu18.04同时安装ros1和ros2

序言 ubuntu18.04&#xff08;已安装ros melodic&#xff09;中安装ros2 dashing版本&#xff0c;以支持ros2工程的编译使用 1. 安装ros melodic 参考我之前的文章&#xff1a;docker容器中安装melodic-ros-core过程总结 2. 安装ros2 dashing &#xff08;1&#xff09;设置…