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; }
完结撒花:
🌈本篇博客的内容【模拟:日期问题、回文日期思路详解及代码实现】已经结束。
🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。
🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。
🌈诸君,山顶见!