建立网站 营业执照,个人做的网站可以收款,云虚拟主机可以做视频网站不,内部优惠券网站怎么做目录 前言#xff1a; 一、时间问题 二、使用步骤 1、考察小时#xff0c;分以及秒的使用、 2、判断日期是否合法 3、遍历日期 4、推算星期几 总结 前言#xff1a;
时间问题可以说是蓝桥杯#xff0c;最喜欢考的问题了,因为时间问题不涉及到算法和一些复杂的知识#xf… 目录 前言 一、时间问题 二、使用步骤 1、考察小时分以及秒的使用、 2、判断日期是否合法 3、遍历日期 4、推算星期几 总结 前言
时间问题可以说是蓝桥杯最喜欢考的问题了,因为时间问题不涉及到算法和一些复杂的知识往往时间复杂度也不是很高可以很好的考察学生的模拟和枚举思想这类题目通常也可以巧用excel来帮助我们解决问题。近几年的考试考察难度也在增大。 一、时间问题
根据十年的题目考察这种类型题目有难有简单简单的甚至可以通过计算机中自带的excel和计算器来算但是通常来投机取巧可以解决的不多掌握代码模板多加练习才是王道 。 二、使用步骤
1、考察小时分以及秒的使用、
如果考察到给你对应时间点让你求差不要多想就是化成统一的单位然后求解。
题目时间显示2021年省赛 代码
#includebits/stdc.h
using namespace std;
typedef long long LL;
int h,m,s;
int main()
{LL n;cin n;n n / 1000 % 86400; // 毫秒化秒并且保留最后一天天数h n/3600; //求得最后一天的小时n n % 3600;m n / 60; //分钟s n % 60; //秒数printf(%02d:%02d:%02d,h,m,s); //02d的意思是如果不足俩位数前补0return 0;
} 2、判断日期是否合法
这类题目比较经典的有回文日期和第八届蓝桥杯省赛CB组的日期问题。这里就讲解一下日期问题这个题目 代码重点是check_vaild函数里面的内容
#include iostream
#include cstring
#include algorithm
#include cstringint days[13] {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_vaild(int year,int month,int day)
{if(month 0 || month 12) return false;if(day 0) return false;if(month ! 2){if(day days[month]) return false;}else{int leap year % 100 year % 4 0 ||year % 400 0;if(day leap 28) return false;}return true;
}
using namespace std;
int main()
{int a,b,c;scanf(%d/%d/%d,a,b,c);for(int date 19600101;date 20591231;date ){int year date / 10000;int month date % 10000 / 100;int day date % 100;if(check_vaild(year,month,day)){if(year % 100 a month b day c || // 年月日month a day b year % 100 c || // 月日年day a month b year % 100 c) // 日月年printf(%d-%02d-%02d\n,year,month,day);}}} 3、遍历日期 这类题型要么是给你俩段时间让你求过去了多场时间第二种就是给你一段时间求一段时间后日期是什么时候。
这种问题特别是求一段时间是多久虽然可以通过电脑中的计算器算出来但是往往考察不会这么简单所掌握编程方法至关重要。
题目2020省赛 代码
#include bits/stdc.h
using namespace std;
int months[13] {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 2000/01/01 -- 2020/10/01;
int main()
{int year 2000, month 1,day 1 ;int week 6;int cnt 0;while(true){cnt ;if(week 1 || day 1){cnt ;}if(year 2020 day 1 month 10) break;day 1;week (week 1) % 7;if (month 2 (year % 4 0 year % 100|| year % 400 0)){if(day 29){month 3;day 1;}}else if(day months[month] month ! 12){day 1;month ;}else if(day months[month] month 12){day 1;month 1;year ;}}cout cnt endl;} 4、推算星期几
在13年省赛就考到了类似的用法
这里除了简单的可以通过excel和计算器求往往会遇到日期太久了这里有个给定日期吗专门·计算是星期几的方法——“基姆拉尔森计算公式” if(month2) month12,year--; week (year year/4 year/400 -year/1002*month3*(month1)/5day)%7; 周一到周六对应week的值为0 - 6 题目 代码
#include bits/stdc.h
using namespace std;
int main()
{int y,m 12,d 31,w;for(int i 10;i 99;i ){y i * 100 99;w (yy/4y/400-y/1002*m3*(m1)/5d)%7;if(w 6){cout y endl;}}return 0;}
//我这里直接遍历所有满足条件的日期最后自己观察那个符合题目本身要求就是一个填空题省点力气了哈
//最终2299满足条件 总结 距离蓝桥杯还有俩个星期之前更新的文章已经有俩期了感谢大家的支持我会继续更新蓝桥杯知识的总结希望大家都能在蓝桥杯中取得好成绩