【模拟】日期问题、回文日期思路详解及代码实现

简介: 若在则将其放入判断日期的函数中,依次取出其中表示年份、月份和日期。创建一个用于存储各个月份对应日期,之后仅需判断(除二月外,每个月份的日期是否小于等于0或大于该数字)

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。


🌈个人主页:主页链接


🌈算法专栏:专栏链接


    我会一直往里填充内容哒!


🌈LeetCode专栏:专栏链接


目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出


🌈代码仓库:Gitee链接


🌈点击关注=收获更多优质内容🌈


6a15468c3a5b4f649f372ddb73ce57e1.jpg


蓝桥杯模拟题,只需要跟着题意做一遍就好,不需要用到一些优化。


相对来说也是比较好拿分的题目,下面来一起看看其中的日期问题吧。


题目:回文日期


e3ce101a5b1d423aaccfab6f0af6a2f7.png


题解:


分析下问题,在给定这个区间内,我们可以尝试列举出所有的回文数字 然后再去判断这个数字是否为合法日期。


主要思路就是:因为数字是八位的且回文,那就意味着前四位与后四位是存在关系的,我们只需要列举出所有的四位数,再将其拼接为回文串,判断是否再该数据范围内。


若在则将其放入判断日期的函数中,依次取出其中表示年份、月份和日期。创建一个用于存储各个月份对应日期,之后仅需判断(除二月外,每个月份的日期是否小于等于0或大于该数字)

将月份特判一下看是否为闰年


代码实现:


#include<iostream>
using namespace std;
int Day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_date(int date)
{
    int year=date/10000;
    int month=date%10000/100;
    int day=date%100;
    if(month!=2&&day>Day[month]||day<=0)return false;
    if(month<=0||month>12)return false;
    int leap=0;
    int res=0;
    if(month==2)
    {
        if(year%100!=0&&year%4==0 || year%400==0)
            {
                if(day>29)return false;
            }
        else if(day>28) return false;
    }
    return true;
}
int main()
{
    int date1,date2;
    int res=0;
    cin>>date1>>date2;
    for(int i=1000;i<10000;i++)
    {
        int date =i,x=i;
        while(x)
        {
            date=date*10+x%10;
            x/=10;
        }
        if(date1<=date&&date<=date2)
        {
            if(check_date(date))res++;
        }
    }
    cout<<res<<endl;
}


题目:日期问题


c6b51fc66fc940d7ba6a2de6eb6a2e52.png


题解:


分析下问题,采取上一题的思路,我们可以将这个范围内的所有八位数字列举出来。进行日期合法判定,若日期合法,则对题给条件进行判定。


具体的为:若日期合法,则取出年月日,判定其是否满足题给的三种情况(年/月/日 月/日/年 日/月/年),满足 则输出


代码实现:


#include<iostream>
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
int Day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a,b,c;
bool check_date(int i)
{
    int day=i%100;
    int year=i/10000;
    int month=i%10000/100;
    if(month<=0||month>13)return false;
    if((month!=2&&day>Day[month])||day<=0)return false;
    if(month==2)
    {
        if(year%4==0&&year%100!=0||year%400==0)
        {
            if(day>29)return false;
        }
        else {
            if(day>28)return false;
        }
    }
    return true;
}
int main()
{
    scanf("%d/%d/%d",&a,&b,&c);
    for(int i=19600101;i<=20591231;i++)
    {
        if(check_date(i))
        {
            int day=i%100;
            int year=i/10000;
            int month=i%10000/100;
            if(day==c&&year%100==a&&month==b||
                month==a&&day==b&&year%100==c||
                day==a&&month==b&&year%100==c)
                printf("%d-%02d-%02d\n",year,month,day);
        }
    }
    return 0;
}


完结撒花:


🌈本篇博客的内容【模拟:日期问题、回文日期思路详解及代码实现】已经结束。

🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。


🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。


🌈诸君,山顶见!

目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
PaddleSpeech:百度飞桨开源语音处理神器,识别合成翻译全搞定
PaddleSpeech是百度飞桨团队推出的开源语音处理工具包,集成语音识别、合成、翻译等核心技术,基于PaddlePaddle框架提供高性能解决方案。
752 18
PaddleSpeech:百度飞桨开源语音处理神器,识别合成翻译全搞定
|
Ubuntu 搜索推荐 Linux
这 8 款 Linux 发行版绝对适合学生群体,看看有没有你喜欢的!
在数字化时代,Linux 操作系统以其稳定性、安全性和强大功能受到学生群体的青睐。本文介绍了 8 款适合学生的 Linux 发行版:Ubuntu、Linux Mint、Fedora、openSUSE、Elementary OS、Manjaro、Zorin OS 和 Kubuntu。这些发行版各具特色,从易用性、软件资源、社区支持和稳定安全性等方面满足学生的需求,帮助他们在学习和技术探索中取得进步。
426 4
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
219 2
|
11月前
|
人工智能 自然语言处理 人机交互
CosyVoice 2.0:阿里开源升级版语音生成大模型,支持多语言和跨语言语音合成,提升发音和音色等的准确性
CosyVoice 2.0 是阿里巴巴通义实验室推出的语音生成大模型升级版,通过有限标量量化技术和块感知因果流匹配模型,显著提升了发音准确性、音色一致性和音质,支持多语言和流式推理,适合实时语音合成场景。
7545 22
CosyVoice 2.0:阿里开源升级版语音生成大模型,支持多语言和跨语言语音合成,提升发音和音色等的准确性
|
开发者
微信开发者工具真机调试连接状态在正常和未连接之间反复横跳
微信开发者工具真机调试连接状态在正常和未连接之间反复横跳
278 1
|
监控 调度
队列的深度解析:链式队列的实现
队列的深度解析:链式队列的实现
|
存储 缓存 NoSQL
本地缓存Caffeine系列(一)
本地缓存Caffeine系列(一)
|
SQL 人工智能 分布式计算
飞天发布时刻:大数据AI平台产品升级发布
阿里云飞天发布时刻产品发布会围绕阿里云大数据AI平台的新能力和新产品进行详细介绍。人工智能平台PAI、云原生大数据计算服务MaxCompute、开源大数据平台E-MapReduce、实时数仓Hologres、阿里云Elasticsearch、向量检索Milvus等产品均带来了相关发布的深度解读。
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体
这篇文章介绍了在Nest.js中如何处理接口统一返回格式的方法。首先定义了响应状态码枚举和类型,然后创建了HttpException异常过滤器来捕获HttpException类的异常并设置自定义响应逻辑。最后通过全局配置和效果预览展示了如何应用这些设置。
505 0
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体