蓝桥杯 --- 日期问题模板

目录

1.如何判断闰年

2.如何遍历当前年份的每一天

3.如果想要输出某一年某一天到某一年某一天之间一共有多少天。

4.精确到具体周几到周几的问题分析

5.如何直接通过一层for循环枚举年月日

习题:


蓝桥杯竞赛特别喜欢考日期问题,今天给大家分享一下日期题的一些解题模板。

1.如何判断闰年

bool judge(int year)
{if((year % 4 == 0 && year % 100!= 0) || year % 400 == 0)return true;else  return false;
}

2.如何遍历当前年份的每一天

首先判断是否为闰年,其次定义一个数组来存储每个月份最多有多少天,并根据是否为闰年进行修改。

#include <iostream>
using namespace std;
bool judge(int year)
{if((year % 4 == 0 && year % 100!= 0) || year % 400 == 0)return true;else  return false;
}	
int data[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{int year;cin >> year;if(judge(year))data[2] = 29;for(int month = 1;month <= 12;month++){for(int day = 1;day <= data[month];day++){//加入判定条件(根据题意来分析)//....}}return 0;
}

3.如果想要输出某一年某一天到某一年某一天之间一共有多少天。

如果想计算1921-07-23十二点 ~ 2020-07-01十二点之间共有多少天?

先将整年的加和,然后加零散的月份及天数。

#include <iostream>
using namespace std;
const int N = 1000;
int day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int time;
int judge(int year)
{if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)return 366;return 365;
}
//1921-07-23 ~ 2020-07-01
int main()
{for(int i = 1922;i <= 2019;i++){time += judge(i);}time += 10;for(int i = 1;i <= 12;i++)//这里因为七月份不完整,所以不单独计算{if(i == 7)  continue;//也可以直接自己算出除了七月的剩余天数,可以减少时间浪费time += day[i];}cout << time << ' ';cout << time * 24 * 60;//输出共有多少秒return 0;
}

4.精确到具体周几到周几的问题分析

这里给大家带来蓝桥杯省赛---跑步训练

 对于星期问题,我们可以通过先设定开始星期mon = 6,然后再循环内部加入判定条件

if(mon == 8)  mon = 1;//如果mon++使mon到星期八,这时候让mon赋值为星期一
if(mon == 1 && data == 1)  sum += 2;//月初需要跑2km
else if(mon == 1 || data == 1)  sum += 2;//周一或者月初需要跑2km
else  sum += 1;			
if(i == 2020 && month == 10 && data == 1)//到达指定日期,直接输出并直接结束循环
{cout << sum;return 0;
}
mon++;

上面是判断星期的方式,无非就是注意星期八改成星期一,其他的部分照常利用年月日三重循环进行枚举 

#include <iostream>
using namespace std;
//2000-01-01(Saturday) ~ 2020-10-01(Thurday),其中某天周一或者月初(1日)要跑2km,其余时间跑1km
int day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool judge(int year)
{if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)return true;return false;
}
int main()
{int sum = 0;int mon = 6;for(int i = 2000;i <= 2020;i++){if(judge(i))  day[2] = 29;else  day[2] = 28;for(int month = 1;month <= 12;month++){for(int data = 1;data <= day[month];data++){if(mon == 8)  mon = 1;if(mon == 1 && data == 1)  sum += 2;else if(mon == 1 || data == 1)  sum += 2;else  sum += 1;if(i == 2020 && month == 10 && data == 1){cout << sum;return 0;}mon++;}}}
}

5.如何直接通过一层for循环枚举年月日

这里就需要除法的运算:

for(int i = 19491001;i <= 20240413;i++)
{int year = i / 10000;int month = i % 10000 / 100;//也可以这样写:int month = i / 100 % 100;int day = i % 100;//...
}

习题:

这里给大家带来的是蓝桥杯C++B组题---日期统计

很明显,这题咱们只需要利用遍历月日,然后在其内部加入循环遍历数组找到其相同的日期。

#include <iostream>
using namespace std;
const int N = 1000;
int main()
{int array[100] = {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};int daymonth[13] = {0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31};	   int res = 0;for(int month = 1;month <= 12;month++){for(int day = 1;day <= daymonth[month];day++){int time[8] = {2 , 0 , 2 , 3 , month / 10 , month % 10 , day / 10 , day % 10};//这里可以利用数组记录当前枚举的年月日,以便于后面便利100数组找到相同日期int a = 0;for(int k = 0;k < 100;k++){if(array[k] == time[a]){a++;}if(a == 8){res++;break;}   }}} cout << res << endl;return 0;
}

 好了,以上是我现已做过蓝桥杯有关日期问题的一些解题技巧,欢迎各位大佬分享自己的一些解题方法,感谢收看,记得三连支持。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令-网络管理

文章目录 ping基本用法主要选项常见用途和理解输出注意事项 ifconfig基本用法配置网络接口示例高级功能 netstat基本用法常用选项示例注意事项 wget主要特点基本用法常见选项 示例注意事项 curl主要特点基本用法常见选项 示例注意事项 参考资料在线文档和手册图书在线教程和指南…

小黑逆向爬虫探索与成长之路:小黑独立破解毛毛租数据加密与解密

前言 有道和招标网的加密入口定位在前面两期做了详细的介绍&#xff0c;本小结将通过简单的关键词搜索定位到加密与解密入口 数据接口寻找与请求 根据响应数据长度&#xff0c;确定数据接口&#xff0c;发现传入的参数需要加密&#xff0c;响应的结果需要解密&#xff0c;后…

通用开发技能系列:SQL基础学习

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 通用开发技能系列 文章&#xff0c;主要对编程通用技能 SQL基础 进行学习 1.数据库简介 1.1.数据库中的一些名称 DataBase&#xff1a;数据库 程序员只负责怎么维护存取数据&#xff0c;不管数据库是什么 DBA…

开源推荐榜【Pear Admin Flask 用python来创建后台管理系统】

最新技术高效快速开发&#xff0c;前后端分离模式&#xff0c;开箱即用。 核心模块包括&#xff1a;用户、角色、职位、组织机构、菜单、字典、日志、多应用管理、文件管理、定时任务等功能。 代码量少、学习简单、功能强大、轻量级、易扩展&#xff0c;轻松开发从现在开始&…

Burp内置浏览器报错提示网页证书无效的解决方式

在Proxy——代理设置中——翻到底&#xff0c;勾选忽略浏览器的Burp错误信息 然后刷新你的网页&#xff0c;就可以按常规操作&#xff0c;点击“继续访问”&#xff0c;打开网页了

时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测

时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测 目录 时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab基于CFBP级联前向BP神经网络时序预测&#xff08;完整源码和数据)&#xff1b; 2.数据集为excel…

STM32CubeMX配置步骤详解五 —— 基础配置(2)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解四 —— 基础配置&#xff08;1&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 特此致谢&#xff01; 三、STM32CubeMX基础配置 上一回讲解了STM32CubeMX基础…

瑞吉外卖实战学习--14、菜品上传

添加菜品接口 前言效果图1、菜品分类查询接口2、上传图片和下载图片3、创建接收数据的Dto4、创建提交的方法 前言 本项目gitee位置&#xff1a;gitee网址 本篇文章是学习了添加菜品的总结&#xff0c;其中包括菜品分类的接口&#xff0c;图片上传接口&#xff0c;数据整体上传…

【每日力扣】198.打家劫舍与213.打家劫舍II与337.打家劫舍 III

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 198.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&…

C语言基础语法-教案16(从小白到劝退之结构体初阶)

最近给大家争取到一个 深夜福利 保证你在深夜手机刷到 嘎嘎香~ 那就是 大流量卡 缺点&#xff1a;月租太便宜 185GB~ 100分钟通话时长~ 长期套餐~ 畅想自由的气息 流量自由的同时还拥有超长通话&#xff0c;而且免费领取。 名额有限&#xff0c;咱们废话不多说直接上…

主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络

本改进已融入到 YOLOv5-Magic 框架。 论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 文章目录 HGNetv2网络结构1.1 主干网络1.2 颈部…

Flink运行机制相关概念介绍

Flink运行机制相关概念介绍 1. 流式计算和批处理2. 流式计算的状态与容错3. Flink简介及其在业务系统中的位置4. Flink模型5. Flink的架构6. Flink的重要概念7. Flink的状态、状态分区、状态缩放&#xff08;rescale&#xff09;和Key Group8. Flink数据交换9. 时间语义10. 水位…