当前位置: 首页 > article >正文

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

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

 

🌈个人主页:主页链接

🌈算法专栏:专栏链接

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

🌈LeetCode专栏:专栏链接 

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

🌈代码仓库:Gitee链接

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

 

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

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

目录

题目:回文日期

         题解:

代码实现:

 题目:日期问题

 题解:

代码实现:

完结撒花:


题目:回文日期

题解:

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

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

若在则将其放入判断日期的函数中,依次取出其中表示年份、月份和日期。创建一个用于存储各个月份对应日期,之后仅需判断(除二月外,每个月份的日期是否小于等于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;
}

 题目:日期问题

 题解:

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

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

代码实现:

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

完结撒花:

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

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

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

🌈诸君,山顶见!


http://www.kler.cn/a/2893.html

相关文章:

  • 使用Grafana中按钮插件实现收发HTTP请求
  • MacOS下TestHubo安装配置指南
  • Flink的Watermark水位线详解
  • HTMLCSS:超炫丝滑的卡片水波纹效果
  • Jensen-Shannon Divergence:定义、性质与应用
  • 基础优化方法
  • 静态通讯录,适合初学者的手把手一条龙讲解
  • 【java基础】Stream流的各种操作
  • 系统集成路由器OSPF动态、综合路由配置
  • 基于SpringBoot的酒店管理系统
  • 机器学习笔记之前馈神经网络(三)M-P神经元模型与感知机的关系
  • ElementUI学习笔记
  • 面试问了解Linux内存管理吗?10张图给你安排的明明白白
  • Linux编辑器-vim
  • 快速上手vue elementUI好看的登录界面
  • 嵌入式学习笔记——SysTick(系统滴答)
  • Mybatis(三):特殊SQL的执行
  • ChatGPT来了你慌了吗?
  • JavaScript到底如何存储数据?
  • 网络安全工程师做什么?
  • 四级数据库工程师 刷真题错题整理(三)数据库原理
  • 排好队,一个一个来:宫本武藏教你学队列(附各种队列源码)
  • Java入门知识(超详细讲解)
  • VSCode嵌入式开发环境搭建
  • kubernets 重新加入集群
  • 【进阶数据结构】——红黑树