【蓝桥杯冲刺】日期类专题特训

这篇具有很好参考价值的文章主要介绍了【蓝桥杯冲刺】日期类专题特训。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 日期累加

题目描述

输入

输出

代码

2. 日期差值

题目描述

输入

输出

代码

3. 打印日期

题目描述

输入

输出

代码

写在最后:


1. 日期累加

题目链接:日期累加

题目描述

【蓝桥杯冲刺】日期类专题特训

输入

1
2008 2 3 100

输出

2008-05-13

代码

#include <iostream>
using namespace std;

//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};

//取当月日期
int get_mday(int year, int mon) {
    if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
    else return month[mon];
}

//具体实现
void plus_day(int& year, int& mon, int& day, int plus) {
    day += plus;
    while (day > get_mday(year, mon)) {
        int mday = get_mday(year, mon);
        if(day > mday) {
            day -= mday;
            mon++;
        }
        if(mon > 12) {
            mon -= 12;
            year++;
        }
    }
}

int main() 
{
    int n;
    cin >> n;
    while(n--) {
        int year, mon, day, plus;
        cin >> year >> mon >> day >> plus;
        //将日期加在一起
        plus_day(year, mon, day, plus);
        printf("%02d-%02d-%02d\n", year, mon, day);
    }
    return 0;
}

2. 日期差值

题目链接:日期差值

题目描述

【蓝桥杯冲刺】日期类专题特训

输入

20110412
20110422

输出

11

代码

#include <iostream>
using namespace std;

//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};

//判断闰年
bool is_leap(int year) {
    if((year % 4 == 0 && year % 100) || year % 400 == 0) return true;
    else return false;
}

int main() 
{
    int n1, n2;
    while (cin >> n1 >> n2) {
        //保证之后的代码时小的日期减大的日期
        if(n1 > n2) swap(n1, n2);
        else if(n1 == n2) {
            cout << 2 <<endl; //题目要求连续日期算两天
            return 0;
        }

        //取出年月日
        int year1 = n1 / 10000, year2 = n2 / 10000;
        int mon1 = n1 / 100 % 100, mon2 = n2 / 100 % 100;
        int day1 = n1 % 100, day2 = n2 % 100;
        int ans = 0;

        //年份差了几天
        while(year1 != year2) {
            if(is_leap(year1)) ans += 366;
            else ans += 365;
            year1++;
        }

        //月份差了几天
        while(mon1 != mon2) {
            if(mon1 < mon2) {
                if(mon1 == 2 && is_leap(year1)) ans += month[mon1] + 1;
                else ans += month[mon1];
                mon1++;
            }
            else {
                if(mon1 == 2 && is_leap(year1)) ans -= month[mon1] + 1;
                else ans -= month[mon1];
            }
        }

        //日期差了几天
        if(day1 < day2) {
            ans += day2 - day1;
        }
        else {
            ans -= day1 - day2;
        }

        cout << ans + 1 << endl;
    }
    return 0;
}

3. 打印日期

题目链接:打印日期

题目描述

【蓝桥杯冲刺】日期类专题特训

输入

2000 3
2000 31
2000 40
2000 60
2000 61
2001 60

输出

2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

代码

#include <iostream>
using namespace std;


//打表
int month[] = {0, 31, 28, 31, 30, 31, 30,31, 31, 30, 31, 30, 31};

//求当月日期
int get_mday(int year, int mon) {
    if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
    else return month[mon];
}

int main() 
{
    int year, day;
    while (cin >> year >> day) {
        int mon = 1;
        while (day > get_mday(year, mon)) {
            day -= get_mday(year, mon);
            mon++;
            if(mon > 12) {
                mon -= 12;
                year++;
            }
        }
        printf("%02d-%02d-%02d\n", year, mon, day);
    }
    return 0;
}

总结:

日期类的题目大同小异,

把日期类的基本思路练熟了,基本上是能够稳拿这一部分的分数的,

如果你的日期类还不熟练,赶快拿上面几道题练一练手吧!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。 文章来源地址https://www.toymoban.com/news/detail-414817.html

到了这里,关于【蓝桥杯冲刺】日期类专题特训的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯十天冲刺计划

    唤我沈七就好啦。 蓝桥杯的比赛要进入倒计时了。 几分焦虑,几分兴奋。 在准备蓝桥杯的这几个月里自己也算学到了点东西。 前几天常年征战蓝桥杯的学长给我罗列了一些考前必须会默写的算法。 我感觉复习更加有方向性了,我又做了些整理和补充现在分享给大家~ 二分

    2023年04月09日
    浏览(40)
  • 蓝桥杯上岸考点清单 (冲刺版)!!!

    谨记:无论是差分/前缀和,下标均从1开始,防止下标越界 写法1 写法2 步骤: (1)先输入数据 (2)预处理前缀和 (3)求出区域内的数的和 作用:使得区间/区域内的数加上1/C 步骤: (1)输入数据 (2)初始化,先自己插自己 (3)处理询问即差分 差分数组:b[],前缀和数组:a[] (4)再求一遍

    2024年02月13日
    浏览(30)
  • 蓝桥杯冲刺 - week1

    🚩第一周从最高频-分数占比 最高 开始练习!涉及算法标签[⚽️DFS,⚽️BFS,⚽️日期问题,⚽️哈希统计] DFS 乃是暴力搜索的基础, BFS 常用于解决迷宫问题,日期问题可以视为常规题 ⏳最后三个星期大家一起冲刺,祝大家rp++🏅 如果对您有帮助的话还请动动小手 点赞👍,收藏

    2023年04月08日
    浏览(60)
  • 蓝桥杯最后的冲刺篇(JAVA)

    目录                 1.路径​          题目要求:                  解题思路:​                 源码附上:                   2.夺宝奇兵​                  题目要求:                  解题思路:            

    2023年04月09日
    浏览(28)
  • 30个题型+代码(冲刺2023蓝桥杯)(上)

    最新消息:未更新的题型不会更新在这篇博客,但是会更新在专栏新的文章里。 愿意的可以跟我一起刷,每个类型做1~5题 ,4月前还可以回来 系统复习   AcW需要付费的题,可以考虑上洛谷,New Oj找替代,或者花点钱 目录 🍎注意 🌼前言 🌼一,前缀和 👊(一)3956. 截断数

    2023年04月15日
    浏览(28)
  • 30个题型+代码(冲刺2023蓝桥杯)(下)

    最新消息:未更新的题型不会更新在这篇博客,但是会更新在专栏新的文章里。 👂 咱们结婚吧(心动版) - 1个球 - 单曲 - 网易云音乐  又一个被社会磨平棱角灰头土脸的失败者平庸人罢了 -----------------------------------分界线---------------------------- 👂 霜雪千年 - 排骨教主 -

    2023年04月09日
    浏览(34)
  • 【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-编程题

    目录 试题F:时间显示 解题思路 代码 试题G:砝码称重 解题思路 代码 试题H:杨辉三角 解题思路 代码 试题I:双向排序 解题思路 试题J:括号序列 解题思路 【问题描述】 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上,朋友已经获取了当前的时间,用一个整数表

    2023年04月16日
    浏览(30)
  • 【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题

    目录 试题A:门牌制作 解题思路: 答案: 试题B:既约分数 解题思路: 答案: 试题C:蛇形填数 解题思路: 答案: 试题D:跑步训练 解题思路: 答案: 试题E:七段码 解题思路: 答案: 写在最后: 小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从

    2023年04月19日
    浏览(54)
  • 【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-编程题

    目录 试题F:成绩统计 解题思路: 代码: 试题G:回文日期 解题思路: 代码: 试题H:字串分值 解题思路: 代码:  试题I:平面切分 解题思路: 代码: 试题J:字串排序 解题思路: 写在最后: 【问题描述】 小蓝给学生们组织了一场考试,卷面总分为 100 分, 每个学生的

    2024年02月02日
    浏览(32)
  • 【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题

    目录 试题A:空间 解题思路 答案 试题B:卡片 解题思路 答案 试题C:直线 解题思路 答案 试题D:货物摆放 解题思路 答案 试题E:路径 解题思路 答案 ​编辑 写在最后: 小蓝准备用 256 MB 的内存空间开一个数组, 数组的每个元素都是 32 位二进制整数, 如果不考虑程序占用的

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包