当前位置: 首页 > news >正文

蓝桥杯:日期问题

目录

  • 引言
  • 一、日期问题
    • 1.题目描述
    • 2.代码实现
    • 3.测试
  • 二、回文日期
    • 1.题目描述
    • 2.代码实现
    • 3.测试

引言

关于这个蓝桥杯的日期问题,其实有一个明确的思路就感觉很简单,这个思路就是不用依照日期的顺序去把每一天走完,而是根据一个数加一,比如说20200204就代表着2020年2月4日,然后让这个数不断地累加,然后每个数去先判断是否为日期,然后再根据题目的要求加一些额外的判断,最后如果条件都满足那么就是要的数,基本上大致的思路都是这样。然后还有一种就是回文日期的问题,然后这类问题就是循环一半,然后用这一半去把整个日期构造出来,然后时间上当然就可以优化很多了,基本就是这样,话不多说,直接看题。

一、日期问题

这道题是第八届蓝桥杯省赛C++B组

1.题目描述

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在196011日至20591231日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年//日的,有采用月//年的,还有采用日//年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如02/03/04,可能是20020304日、20040203日或20040302日。给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?输入格式
一个日期,格式是”AA/BB/CC”。即每个’/’隔开的部分由两个 0-9 之间的数字(不一定相同)组成。输出格式
输出若干个不相同的日期,每个日期一行,格式是”yyyy-MM-dd”。多个日期按从早到晚排列。数据范围
0≤A,B,C≤9输入样例:
02/03/04输出样例:
2002-03-04
2004-02-03
2004-03-02

2.代码实现

思路就是我那个引言说的:不用依照日期的顺序去把每一天走完,而是根据一个数加一,比如说20200204就代表着2020年2月4日,然后让这个数不断地累加,然后每个数去先判断是否为日期,然后再根据题目的要求加一些额外的判断,最后如果条件都满足那么就是要的数,基本上大致的思路都是这样。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int a, b, c;int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};bool isDate(int y, int m, int d)
{if(y < 1960 || y > 2059 || m <= 0 || m > 12 || d < 0 || d > 31) return false;if(m != 2 && d > days[m]) return false;else if(m == 2){int leap_year = y % 400 == 0 || y % 4 == 0 && y % 100 != 0;if(d > days[m] + leap_year) return false;}return true;
}//abc cab cba
bool check(int y, int m, int d)
{if(!(y % 100 == a && m == b && d == c || y % 100 == c && m == a && d == b ||y % 100 == c && m == b && d ==a)) return false;if(isDate(y,m,d)) return true;return false;
}int main()
{scanf("%d/%d/%d", &a, &b, &c);for(int i = 1960; i <= 2059; ++i){for(int j = 1; j <= 12; ++j){for(int k = 1; k <= 31; ++k){if(check(i,j,k))printf("%d-%02d-%02d\n", i, j, k);}}}return 0;
}

3.测试

这个测试当然是没问题的,然后也AC了
在这里插入图片描述

二、回文日期

1.题目描述

在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。牛牛习惯用 8位数字表示一个日期,其中,前 4位代表年份,接下来 2位代表月份,最后 2位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。一个 8位数字是回文的,当且仅当对于所有的 (1≤i≤8) 从左向右数的第 i个数字和第 9−i个数字(即从右向左数的第 i个数字)是相同的。例如:对于 20161119日,用 8位数字 20161119表示,它不是回文的。对于 201012日,用 8位数字 20100102 表示,它是
回文的。对于 2010102 日,用 8 位数字 20101002 表示,它不是回文的。输入格式
输入包括两行,每行包括一个 8 位数字。第一行表示牛牛指定的起始日期 date1,第二行表示牛牛指定的终止日期 date2
。保证 date1 和 date2 都是真实存在的日期,且年份部分一定为 4 位数字,且首位数字不为 0。保证 date 一定不晚于 date2。输出格式
输出共一行,包含一个整数,表示在 date1 和 date2 之间,有多少个日期是回文的。输入样例:
20110101
20111231输出样例:
1

2.代码实现

这个思路还是我引言说的:然后还有一种就是回文日期的问题,然后这类问题就是循环一半,然后用这一半去把整个日期构造出来,然后时间上当然就可以优化很多了,基本就是这样。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int d1, d2;int turn(int n)
{int res = 0;while(n){res = res * 10 + n % 10;n /= 10;}return res;
}bool check(int n)
{int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int y = n / 10000;int m = n % 10000 / 100;int d = n % 100;if(m <= 0 || m > 12 || d <= 0 || d > 31) return false;if(m != 2 && d > days[m]) return false;if(m == 2){int leap_year = y % 400 == 0 || y % 100 != 0 && y % 4 == 0;if(d > days[m] + leap_year) return false;}return true;
}int main()
{cin >> d1 >> d2;int res = 0;for(int i = 1000; i < 10000; ++i){int date = i * 10000 + turn(i);if(d1 <= date && date <= d2 && check(date)) res++;}printf("%d\n", res);return 0;
}

3.测试

测试也是通过了的,然后这道题也AC了
在这里插入图片描述

相关文章:

蓝桥杯:日期问题

目录 引言一、日期问题1.题目描述2.代码实现3.测试 二、回文日期1.题目描述2.代码实现3.测试 引言 关于这个蓝桥杯的日期问题&#xff0c;其实有一个明确的思路就感觉很简单&#xff0c;这个思路就是不用依照日期的顺序去把每一天走完&#xff0c;而是根据一个数加一&#xff…...

vue 简单实现购物车:商品基础信息最终的 html 文件 + 商品计数器的组件处理,实现了购物车;

购物车实现过程&#xff1a; Ⅰ、商品购物车作业需求&#xff1a;1、商品购物车页面示例&#xff1a;2、具体需求&#xff1a; Ⅱ、html 文件的构建&#xff1a;商品购物车.html Ⅲ、组件文件的构建&#xff1a;商品购物车1.js Ⅳ、小结&#xff1a; Ⅰ、商品购物车作业需求&am…...

交叉熵损失(Cross Entropy Loss)学习笔记

在分类任务中&#xff0c;我们通常使用交叉熵作为损失函数&#xff0c;首先给出交叉熵的计算公式&#xff1a; 二分类中&#xff1a; L 1 N ∑ i L i 1 N ∑ i − [ y i l o g ( p i ) ( 1 − y i ) ⋅ l o g ( 1 − p i ) ] \mathcal{L}\frac1{N}\sum_{i}L_i\frac1{N}\sum…...

python flask alchemy在判断None值时与flake8格式检测冲突

python flask alchemy 在判断None值时候&#xff0c;推荐使用/!来判断。例如&#xff1a; query.filter(User.nameNone)query.filter(User.name!None) 但是这样的代码提交后时过不了flake8的语法检查&#xff0c;会报错&#xff1a; flake8...................................…...

Text Intelligence - TextIn.com AI时代下的智能文档识别、处理、转换

本指南将介绍Text Intelligence&#xff0c;AI时代下的智能文档技术平台 Textin.com 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认…...

55.0/CSS 的应用(详细版)

目录 55.1.1 设计边框样式 55.1.2 调整边框的粗细 55.1.3 边框颜色 55.1.4 复合设置边框 55.2 模块的边距 55.3 模块的内边距 55.4 层的应用 55.4.1 层的建立 55.4.2 浮动——float 55.4.3 清除浮动 55.4.4 层的定位 55.4.5 设置层的溢出——overflow 55.4.6 设置鼠…...

磁盘类型选择对阿里云RDS MySQL的性能影响

测试说明 这是一个云数据库性能测试系列&#xff0c;旨在通过简单标准的性能测试&#xff0c;帮助开发者、企业了解云数据库的性能&#xff0c;以选择适合的规格与类型。这个系列还包括&#xff1a; * 云数据库(RDS MySQL)性能深度测评与对比 * 阿里云RDS标准版(x86) vs 经济…...

数据结构---算法的时间复杂度

文章目录 前言计算机重要存储数据结构与算法数据结构概念算法 数据库概念 算法的复杂度时间复杂度概念为什么有时间复杂度大O渐进表示法时间复杂度实例实例1&#xff1a;时间复杂度&#xff1a;O&#xff08;N&#xff09;实例2&#xff1a;这里输入参数是不确定的所以 时间复杂…...

后缀为.vue是什么文件

.vue是一种文件格式&#xff0c;它是用于构建Web应用程序的前端框架Vue.js的组件文件 Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面 在Vue.js中&#xff0c;应用程序被组织为一组可重用的组件&#xff0c;而.vue文件就是用来定义这些组件的 一个.vue文件包…...

前端微信小程序AES加密解密踩坑

项目场景&#xff1a; 今天蛮沮丧的&#xff0c;在和别人对接的时候aes加解密的时候踩了坑。今天有个同事请假了&#xff0c;所以本来他和别人对接的活&#xff0c;老大给了我&#xff0c;然后我就正式踏上了战战兢兢的对接之路。 1.一开始的时候对面先是问用的啥加密方法。这…...

代码随想录算法训练营第五十八天| 739 每日温度 496 下一个更大元素 |

目录 739 每日温度 496 下一个更大元素 | 739 每日温度 求后面第一个比他大的元素的位置&#xff0c;单调栈如果递增 求后面第一个比他小的元素的位置&#xff0c;单调栈需要递减 class Solution { public:vector<int> dailyTemperatures(vector<int>& tempe…...

配置自定义RedisTemplate 解决redis序列化java8 LocalDateTime

目录 配置自定义RedisTemplate 引入依赖 配置连接redis 编写测试类 出现问题 配置序列化 解决redis序列化java8 LocalDateTime 问题背景 问题描述 问题分析 解决方案一&#xff08;全局&#xff09; 解决方案二&#xff08;单个字段&#xff09; 配置自定义RedisTe…...

华为---登录USG6000V防火墙---console、web、telnet、ssh方式登录

目录 一、环境搭建 二、第一次登录USG6000V防火墙&#xff0c;即通过console方式登录 三、用户配置 四、web登录USG6000V防火墙 1. 用web创建的用户通过web方式登录USG6000V防火墙 2. 命令行创建的用户通过web方式登录USG6000V防火墙 五、ssh方式登录USG6000V防火墙 1. 用…...

css图片属性,图片自适应

CSS 图片属性指南&#xff1a;background-size 和 object-fit 在前端开发中&#xff0c;使用图片是非常常见的。为了让图片在网页中显示得更好&#xff0c;CSS 提供了多种属性来调整和控制图片的大小和布局。其中&#xff0c;background-size 和 object-fit 是两个常用的属性&a…...

【Python百宝箱】数据科学的黄金三角:数据挖掘和聚类

数据之舞&#xff1a;Python数据科学库横扫全场 前言 在当今数据驱动的时代&#xff0c;Python成为数据科学家和分析师的首选工具之一。本文将介绍一系列强大的Python库&#xff0c;涵盖了数据处理、可视化、机器学习和自然语言处理等领域。无论你是初学者还是经验丰富的数据…...

【数据结构和算法】最大连续1的个数 III

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四、…...

AngularJS

理解实现代码的逻辑为主要&#xff0c;代码怎么写为次要。 参考资料&#xff1a; 《AngularJS入门与进阶》&#xff0c;江荣波著 前端开发常用框架 React&#xff1a;由Facebook开发&#xff0c;用于构建用户界面的JavaScript库&#xff0c;以组件化和虚拟DOM著称。 Angular&…...

初级数据结构(七)——二叉树

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;六&#xff09;——堆 | NULL 下一篇-> 1、写在前面 二叉树的基本概念在《初级数据结构&#xff08;五&#xff09;——树和二叉树的概念》中已经介绍得足够详细了。上一…...

对比学习综述

1.简介 2.相关工作 2.1、Inst Disc 代理任务&#xff1a;个体判别。把每一个图片看作是一种类别&#xff0c;把每一个图片都区分开来。 正负样本选择&#xff1a;正样本是图片本身&#xff0c;负样本是数据集里的其他图片&#xff0c;该文章从memory bank中随机抽取4096个负…...

R语言【cli】——cli_warn可以更便捷的在控制台输出警告信息

Package cli version 3.6.2 cli_warn(message, ..., .envir parent.frame()) 参数【message】&#xff1a;它是通过调用 cli_bullets() 进行格式化的。进一步地&#xff0c;还需要调用 inline-makeup&#xff08;内联标记&#xff09;。 参数【...】&#xff1a;传递给 rlan…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...