蓝桥杯C/C++程序设计——日期统计

news2025/4/22 11:36:23

问题描述

小蓝现在有一个长度为 100100 的数组,数组中的每个元素的值都在 00 到 99 的范围之内。数组中的元素从左至右如下所示:

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

  1. 子序列的长度为 88;
  2. 这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且要求这个日期是 2023 年中的某一天的日期,例如 20230902,20231223。yyyy 表示年份,mm表示月份,dd表示天数,当月份或者天数的长度只有一位时需要一个前导零补充。

请你帮小蓝计算下按上述条件一共能找到多少个不同的 2023 年的日期。对于相同的日期你只需要统计一次即可。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

总通过次数: 640  |  总提交次数: 836  |  通过率: 76.6%

难度: 简单   标签: 2023, 暴力, 枚举, 省赛

解题步骤

首先我们观察题目,对题目进行分析,我们要寻找的日期的检索,需要对日期进行遍历循环,然后在一一比较寻找,同时在计数

#include<iostream> // 包含输入输出流库
using namespace std; // 使用标准命名空间

int main() // 主函数入口
{
   // 定义日期数组a,包含41个元素
   int a[41]={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};
   int moth,day; // 定义月份和日期变量
   int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; // 定义每个月份的天数
   int sum=0; // 连续出现四位数字的次数累积和

   // 外层循环遍历每个月份
   for(int moth=1;moth<=12;moth++)
   {
      // 内层循环遍历每个月份的每一天
      for(int day=1;day<=month[moth];day++)
      {
            int days[4]; // 定义包含4个整型元素的数组,用于存储日期的四位数字

            if(moth<10) // 如果月份小于10
            {
              days[0]=0; // 数组的第一个元素为0
              days[1]=moth; // 数组的第二个元素为当前月份
            }
            else // 如果月份大于等于10
            {
              days[0]=1; // 数组的第一个元素为1
              days[1]=moth%10; // 数组的第二个元素为月份的个位数
            }
            
            if(day<10) // 如果日期小于10
            {
              days[2]=0; // 数组的第三个元素为0
              days[3]=day; // 数组的第四个元素为当前日期
            }
            else // 如果日期大于等于10
            {
              days[2]=day/10; // 数组的第三个元素为日期的十位数
              days[3]=day%10; // 数组的第四个元素为日期的个位数
            }
            
            int k=0; // 记录已匹配的数字个数
            // 遍历日期数组a
            for(int i=0;i<41;i++)
            {
                // 检查是否与日期的四位数字连续匹配
                if(days[k]==a[i])
                {
                  k++; // 如果匹配成功,则k加1
                }
                // 如果已连续匹配四位数字,则累积和加1并跳出循环
                if(k==4)
                {
                  sum++; // 累积和加1
                  break; // 跳出循环
                }
            }
      }
   }

   // 输出四位数字连续出现的总次数
   cout<<sum;
   return 0; // 返回执行成功
}

 

  

  1. 定义一个长度为41的整型数组a,存储了一组日期。
  2. 定义整型变量moth、day和sum,分别用来表示月份、日期和连续出现次数的累积和。
  3. 定义整型数组month,存储了每个月份的天数。
  4. 使用嵌套的for循环,遍历每个月份的每一天。
  5. 对于每一天,使用一个长度为4的整型数组days,用来存储该日期的四位数字表示。
  6. 将月份和日期的十位和个位数字分别存储到days数组中。
  7. 使用一个变量k来记录当前已经匹配到的数字个数,初始值为0。
  8. 遍历数组a,与days中的数字进行逐一比较。
  9. 如果当前数字与days中对应位置的数字相等,则将k加1。
  10. 如果k等于4,表示连续的四个数字都已经匹配成功,此时将sum加1,并跳出循环。
  11. 最后输出sum的值,即日期数组a中连续出现四位数字的次数。

 

#include<iostream> // 包含输入输出流库
using namespace std; // 使用标准命名空间

int main() // 主函数入口
{
   // 定义日期数组a,包含41个元素
   int a[41]={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};
   int moth,day; // 定义月份和日期变量
   int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; // 定义每个月份的天数
   int sum=0; // 连续出现四位数字的次数累积和

上面这部分是代码的开头,包括了头文件的引入、命名空间的声明以及主函数的开始。还定义了日期数组a、月份和日期变量、每个月份的天数和连续出现四位数字的次数累积和。

   // 外层循环遍历每个月份
   for(int moth=1;moth<=12;moth++)
   {
      // 内层循环遍历每个月份的每一天
      for(int day=1;day<=month[moth];day++)
      {
            int days[4]; // 定义包含4个整型元素的数组,用于存储日期的四位数字

这里是外层和内层的两个for循环,用来遍历每个月份的每一天。在内层循环里定义了一个包含4个整型元素的数组days,用于存储日期的四位数字。

            if(moth<10) // 如果月份小于10
            {
              days[0]=0; // 数组的第一个元素为0
              days[1]=moth; // 数组的第二个元素为当前月份
            }
            else // 如果月份大于等于10
            {
              days[0]=1; // 数组的第一个元素为1
              days[1]=moth%10; // 数组的第二个元素为月份的个位数
            }
            
            if(day<10) // 如果日期小于10
            {
              days[2]=0; // 数组的第三个元素为0
              days[3]=day; // 数组的第四个元素为当前日期
            }
            else // 如果日期大于等于10
            {
              days[2]=day/10; // 数组的第三个元素为日期的十位数
              days[3]=day%10; // 数组的第四个元素为日期的个位数
            }

这部分对日期数组的处理,根据月份和日期的大小进行判断,将月份和日期的十位和个位数字分别存储到数组days中。

            int k=0; // 记录已匹配的数字个数
            // 遍历日期数组a
            for(int i=0;i<41;i++)
            {
                // 检查是否与日期的四位数字连续匹配
                if(days[k]==a[i])
                {
                  k++; // 如果匹配成功,则k加1
                }
                // 如果已连续匹配四位数字,则累积和加1并跳出循环
                if(k==4)
                {
                  sum++; // 累积和加1
                  break; // 跳出循环
                }
            }
      }
   }

这里是具体的计算逻辑,通过一个嵌套循环遍历日期数组a,并与days中的数字进行逐一比较,判断是否连续匹配四位数字。

   // 输出四位数字连续出现的总次数
   cout<<sum;
   return 0; // 返回执行成功
}

最后输出四位数字连续出现的总次数,并返回执行成功。

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

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

相关文章

【数据结构】栈和队列(栈的基本操作和基础知识)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 目录 前言 栈 栈的概念和结构 栈的实现 ​…

Python+OpenGL绘制3D模型(九)完善插件功能: 矩阵,材质,法线

系列文章 一、逆向工程 Sketchup 逆向工程&#xff08;一&#xff09;破解.skp文件数据结构 Sketchup 逆向工程&#xff08;二&#xff09;分析三维模型数据结构 Sketchup 逆向工程&#xff08;三&#xff09;软件逆向工程从何处入手 Sketchup 逆向工程&#xff08;四&#xf…

结构体:搜索链表

#include<iostream> #include<iomanip> using namespace std; struct Student //创建结构体Student {int number; //学号char name[20]; //姓名float Chinese, Math, English; //成绩语数英Student* next; //下一个节点 }; Student* CreateList() //创建链表 {Stud…

Pytorch的讲解及实战·MNIST数据集手写数字识别

目录 一、前言与pytorch的下载 1、前言 2、下载pytorch ①创建虚拟环境 ②下载pytorch&#xff08;cpu版&#xff09; ③测试pytorch是否下载成功 ④使用jupyter notebook 但是使用不了torch的解决方法 二、pytorch的使用 1、Tensor的数据类型 ①torch.FloatTensor …

【网络安全 | Misc】a_good_idea

正文 使用winhex看到有zip压缩包&#xff1a; 改后缀&#xff1a; 得到两张图&#xff0c;txt中写道&#xff1a;寻找像素的秘密 使用stegsolve将合并两张图并进行像素相减&#xff1a; 再将该图进行转换色道&#xff1a; 扫描二维码得到flag&#xff1a;

计算机网络【HTTP 灵魂拷问?】

1. HTTP 报文结构是怎样的&#xff1f; 对于 TCP 而言&#xff0c;在传输的时候分为两个部分:TCP头和数据部分。 而 HTTP 类似&#xff0c;也是header body的结构&#xff0c;具体而言: 起始行 头部 空行 实体由于 http 请求报文和响应报文是有一定区别&#xff0c;因此…

【基础】【Python网络爬虫】【4.requests入门】(附大量案例代码)(建议收藏)

Python网络爬虫基础 requests 入门1. 请求方法&#xff08;Method&#xff09;2. GET与POST方法3. 简单爬虫4. url地址构成url的概念url的组成部分案例 - 添加请求头发送 5. 查看请求体6.查看响应体案例 - 某厨房首页数据爬取&#xff08;UA检测&#xff09; 7. 设置响应体编码…

uni-app uni-app内置组件

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

Vue2【插槽】

目录 1&#xff1a;插槽-默认插槽&#xff1a; 2&#xff1a;插槽-具名插槽 &#xff1a; 3&#xff1a;插槽-作用域插槽&#xff1a; 总结&#xff1a;2023再见&#xff0c;2024再见&#xff01;&#xff01;&#xff01; 1&#xff1a;插槽-默认插槽&#xff1a; 作用&a…

【neo4j】简单使用

【neo4j】简单使用 创建节点 需要建立一个symmap中医数据集的节点&#xff0c;从csv中读取数据 下面是herb的数据 将该文件放在import中 将xlsx文件转换为csv LOAD CSV WITH HEADERS FROM "file:///herb.csv" AS line CREATE (:herb {name:line.Chinese_name,p…

线上发布稳定性方案介绍

目录 一、方案说明 二、线上发布问题描述 2.1 无损上下线背景说明 2.1.1 服务⽆法及时下线 2.1.2 初始化慢 2.1.3 注册太早 2.1.4 发布态与运⾏态未对⻬ 三、问题解决方案 3.1 无损下线方案 3.1.1 什么是无损下线 3.1.2 传统解决方式 3.1.3 云原生场景解决方案 3.1…

在macOS中搭建.NET MAUI开发环境

文章目录 准备安装扩展安装 .NET安装工作负载安装 Xcode 命令行工具调试安卓应用安装 JDK安装 Android SDK 安装 Android 模拟器安装模拟器安装镜像创建虚拟机 同意许可条款创建 MAUI 项目调试 MAUI 应用切换调试目标 参考资料 准备 一台 macOS Monterey 以上的电脑安装 XCode…

FileZilla的安装与使用

文章目录 一、FileZilla简介1.1 FileZilla概述1.2 FileZilla 的优点1.3 FileZilla 的应用场景 二、搭建FileZilla服务器2.1 下载2.2 安装服务端2.3 新建组2.4 新建用户2.5 新建目录2.6 权限分配2.7 安装客户端2.8 FilaZilla远程连接 三、主被动模式 一、FileZilla简介 1.1 Fil…

【SpringCloud】从实际业务问题出发去分析Eureka-Server端源码

文章目录 前言1.EnableEurekaServer2.初始化缓存3.jersey应用程序构建3.1注册jeseryFilter3.2构建JerseyApplication 4.处理注册请求5.registry&#xff08;&#xff09; 前言 前段时间遇到了一个业务问题就是k8s滚动发布Eureka微服务的过程中接口会有很多告警&#xff0c;当时…

STM32入门教程-2023版【3-2】使用库函数点亮GPIO灯

关注 点赞 不错过精彩内容 大家好&#xff0c;我是硬核王同学&#xff0c;最近在做免费的嵌入式知识分享&#xff0c;帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 二、正式点亮一个LED灯 &#xff08;3&#xff09;使用库函数点亮GPIO灯 RCC初始化 首先用的是&…

【Java | 多线程案例】定时器的实现

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 这里写…

“推荐大战:抖音vs.快手”——背后的秘密全揭晓!

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的小伙伴。最近在面试的时候遇到了一个非常有趣的问题&#xff0c;也是很多人关心的话题——字节跳动产品面试题&#xff1a;说一下抖音和快手的推荐策略有什么不同&#xff1f;今天&#xff0c;就让我们一起来揭开这…

前端vue uni-app使用Vue和ECharts构建交互式树形结构图

题目&#xff1a;使用Vue和ECharts构建交互式树形结构图 摘要&#xff1a;本文介绍了如何使用Vue.js和ECharts构建一个交互式的树形结构图。通过整合ECharts的强大可视化功能&#xff0c;我们创建了一个可拖拽移动、点击展开和收缩的树形结构图&#xff0c;并实现了无限添加子…

《Spring Cloud学习笔记:微服务保护Sentinel + JMeter快速入门》

Review 解决了服务拆分之后的服务治理问题&#xff1a;Nacos解决了服务治理问题OpenFeign解决了服务之间的远程调用问题网关与前端进行交互&#xff0c;基于网关的过滤器解决了登录校验的问题 流量控制&#xff1a;避免因为突发流量而导致的服务宕机。 隔离和降级&#xff1a…

Java EE Servlet之Servlet API详解

文章目录 1. HttpServlet1.1 核心方法 2. HttpServletRequest3. HttpServletResponse 接下来我们来学习 Servlet API 里面的详细情况 1. HttpServlet 写一个 Servlet 代码&#xff0c;都是要继承这个类&#xff0c;重写里面的方法 Servlet 这里的代码&#xff0c;只需要继承…