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

目录

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;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS——判断节假日(假日包括周末,不包括调休上班的周末)

思路&#xff1a;创建两个数组&#xff0c;数组1为节假日数组&#xff0c;数组2为是周末上班日期数组。如果当前日期&#xff08;或某日期&#xff09;同时满足2个条件&#xff08;1.在节假日数组内或在周末。2.不在周末上班日期数组&#xff09;即为节假日&#xff0c;否则即为…

即将截稿 CCF-A多媒体顶会ACM MM‘24 北京时间4月9日提交摘要

会议之眼 快讯 第32届ACM MM (ACM MULTIMEDIA)即国际多媒体会议将于 2024 年 10月28 -日11月1日在澳大利亚墨尔本隆重举行&#xff01;MM是由ACM&#xff08;Association for Computing Machinery&#xff0c;计算机协会&#xff09;主办的国际性学术会议&#xff0c;是计算机…

【Java EE】Maven jar 包下载失败问题的解决方法

文章目录 1. 配置好国内的Maven源1.1配置当前项⽬setting1.2设置新项⽬的setting 2.重新下载jar包3.其他问题⭕总结 1. 配置好国内的Maven源 因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源 接下来介绍, 如何设置国内源 1.1配…

分享一款实用的太阳能充电电路(室内光照可用)

随着物联网的发展&#xff0c;很多智能电子设备都朝着低功耗方向发展&#xff0c;光能&#xff0c;风能&#xff0c;机械能等不同的自然能源都能被利用起来作为电子设备的能量来源&#xff0c;本文要分享一款太阳能充电电路。 前言 大家好&#xff0c;我又来分享电路了&#…

redis的常用基本命令与持久化

文章目录 redis的基本命令1.授权密码2.增加、覆盖、查询、删除、切换库名、移动、清空数据库 Redis持久化RDB模式主动备份自动备份RDB备份过程 AOF备份模式开启AOF备份模式执行流程 总结 redis的基本命令 1.授权密码 config set requirepass 密码设置完密码需要认证密码以后才…

OpenAI劲敌出手!Claude 3正式发布,全面超越GPT-4。Claude3模型特点和使用教程分享

已有GPT官方账号不会升级GPT4请参考&#xff1a;【国内如何用gpt4&#xff1f;如何升级gpt4&#xff1f;保姆级教程】 一、Claude震撼发布焦点分析 1.Claude震撼发布 北京时间2024年3月4日晚间&#xff0c;Anthropic&#xff0c;毫无预警地发布了最新一代大模型Claude 3&…

echarts 地图 自己圈地图 乡镇街道

这个是方式是我实在不愿意做的&#xff01; 如果有现成的最好&#xff0c;没有办法的情况下再用这个东西。 今天公司有一个项目&#xff0c;地方划分了一块区域&#xff0c;但是国家没有审核&#xff0c;但是项目里面用到了一个地图展示数据&#xff01;然后就需要我们自己把…

【深度学习】深度学习md笔记总结第3篇:TensorFlow介绍,学习目标【附代码文档】

深度学习笔记完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;深度学习课程&#xff0c;深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍&#xff0c;2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

Java 包装类初识泛型

登神长阶 第六阶 包装类&初识泛型 目录 &#x1f600;一.包装类 &#x1f604;1.基本数据类型以及其对应的包装类 &#x1f602;2.装箱和拆箱 &#x1f607;2.1.装箱&#xff08;Boxing&#xff09; &#x1f609;2.2.拆箱&#xff08;Unboxing&#xff09; &#x…

[计算机知识] 各种小问题思考

哈希算法以及哈希冲突 哈希算法&#xff1a;将任何长度的输入通过散列函数转换成固定长度的字符串 哈希冲突&#xff1a;不同的输入经过哈希函数处理后得到相同的哈希值 因为哈希函数的输出域是有限的 解决哈希冲突&#xff1a; 1. 开放寻址&#xff1a;产生哈希冲突后&…

C语言程序与设计——指针地址与main函数

指针变量 在C语言中&#xff0c;最重要的就是对于指针和地址的理解&#xff0c;因为C语言是更接近底层的编程语言&#xff0c;所以它可以允许开发者对内存操作&#xff0c;这也是区别于其它编程语言的一个重要特性。 如何对内存进行操作呢。我们知道在编程过程中&#xff0c;在…

续二叉搜索树递归玩法

文章目录 一、插入递归二、寻找递归&#xff08;非常简单&#xff0c;走流程就行&#xff09;三、插入递归&#xff08;理解起来比较麻烦&#xff09; 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的…

ruoyi-nbcio-plus基于vue3的flowable流程设计器主界面升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

瑞_Redis_商户查询缓存

文章目录 项目介绍1 短信登录2 商户查询缓存2.1 什么是缓存2.1.1 缓存的应用场景2.1.2 为什么要使用缓存2.1.3 Web应用中缓存的作用2.1.4 Web应用中缓存的成本 2.2 添加Redis缓存2.2.1 背景2.2.2 缓存模型和思路2.2.3 代码实现2.2.4 测试附&#xff1a;IDEA控制台输出自动换行设…

Railway免费部署Flowise AI工作流教程

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

C++中的vector与C语言中的数组的区别

C中的vector和C语言中的数组在很多方面都有所不同&#xff0c;以下是它们之间的一些主要区别&#xff1a; 大小可变性&#xff1a; vector是C标准模板库&#xff08;STL&#xff09;提供的动态数组容器&#xff0c;它的大小可以动态增长或减少。这意味着你可以在运行时添加或删…

常见滤波算法(PythonC版本)

简介 受限于MCU自身的ADC外设缺陷&#xff0c;精度和稳定性通常较差&#xff0c;很多场景下需要用滤波算法进行补偿。滤波的主要目的是减少噪声与干扰对数据的影响&#xff0c;让数据更加接近真实值。 一阶低通滤波 一阶低通滤波是一种信号处理技术&#xff0c;用于去除信号中…

Verilog奇技淫巧(二)

1. Verilog系统函数及其作用总结 $time用来查看当前仿真时刻&#xff0c;返回一个64bit的整数来表示的当前仿真时刻&#xff1b; $ realtime和$time的作用相同&#xff0c;$realtime但是返回的时间数字是一个实型数&#xff1b; $readmemb&#xff0c;用来从文件中读取数据到…

从redux的基本概念渐进式理解redux/toolkit的用法

概念 Redux toolkit是帮助提高redux开发效率的一个库 React-redux 是将React和Redux toolkit绑定在一起的一个库 action 是一个对象,里面有一个type属性 action creator是一个函数,这个函数可以返回上面的action对象。 reducer 是一个函数,接受两个参数(initilastate, acti…

北京哪位医生治疗糖尿病比较好?

糖尿病是一种常见的慢性疾病&#xff0c;主要是由于胰岛素分泌不足或利用障碍导致的以高血糖为特征的代谢性疾病。持续的高血糖和长期的代谢紊乱可能导致全身组织器官&#xff0c;特别是眼、肾、心血管及神经系统的损害和功能障碍。 北京崇文门医院朱学敏主任在糖尿病领域有有着…