历年蓝桥杯 日期类问题总结
发现每年基本上都会有日期处理类的问题, 或者模拟,或者其他,所以就把历年所有日期问题都整理一下吧
输入 1998 输出 1998-2-13 1998-3-13 1998-11-13
题解:
-
首先是闰年判断
bool isLeap(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }
-
其次是求指定日期是星期几 (当前日期到公元1年1月1日的天数 % 7 )
闰年时:((year-1)*365 + (year-1)/4 - year/100 + year/400 + b[i] + 1) % 7
平年时:((year-1)*365 + year / 4 -year/100 + year/400 + a[i] + 1) % 7
0:星期日 ,1:星期一,2:星期二,3:星期三,4:星期四,5:星期五,6:星期六
其中 a[i] 和 b[i] 指的是 该年1号 到 现在 的天数。这是因为我们知道公元1年1月1日是星期一
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
//闰年29天
bool isLeap(int year)
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main()
{
int year, ans = 0;
//闰年的:每年一日到该月13日的天数
int Leap[] = {
12, 31+12, 31+29+12, 31+29+31+12, 31+29+31+30+12, 31+29+31+30+31+12,
31+29+31+30+31+30+12, 31+29+31+30+31+30+31+12, 31+29+31+30+31+30+31+31+12,
31+29+31+30+31+30+31+31+30+12, 31+29+31+30+31+30+31+31+30+31+12, 31+29+31+30+31+30+31+31+30+31+30+12 };
//平年的:每年一日到该月13日的天数
int not_Leap[] = {
12, 31+12, 31+28+12, 31+28+31+12

本文总结了历年蓝桥杯竞赛中的日期类问题,包括闰年判断、星期几计算以及不同日期格式的处理。提供了题解和解题思路,如通过Excel辅助计算和代码实现,强调了在比赛中此类问题的解决策略。
最低0.47元/天 解锁文章
752

被折叠的 条评论
为什么被折叠?



