这题我没做出来,我是参考了大佬的博客才写出来的
//[蓝桥杯2017初赛]日期问题
//这道题是一道关于处理的题,也涉及思维,不过我确实没想到,继续学习吧,吃一堑长一智呗
//
//
#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef struct{
int nian;
int yue;
int ri;
int all;//添加一个成员变量all,all的意思是日期的数字化,比如说"2022-04-02",
//数字化后就是2022*10000+4*100+2=20220402,这样简化了对日期的排序,
//最后日期的去重也用到了变量all
}rq;
rq r[3];
int k=0;
int ts[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年二月29 平年二月28
bool cmp(rq r1,rq r2){
return r1.all<r2.all;
}
void dy(int year,int month,int day){
if((year%4==0&&year%100!=0)||(year%400==0)) ts[2]=29;
else ts[2]=28;
if(month<1||month>12) return;
if(day<1||day>ts[month]) return;
if(year>=0&&year<=59) r[k].nian=2000+year;
else r[k].nian=1900+year;
r[k].yue=month;
r[k].ri=day;
r[k].all=r[k].nian*10000+r[k].yue*100+r[k].ri;
k+=1;
}
int main(){
int a,b,c;
scanf("%d/%d/%d",&a,&b,&c);
dy(a,b,c);
dy(c,a,b);
dy(c,b,a);
sort(r,r+k,cmp);
int ans=0;
for(int i=0;i<k;i++){
if(r[i].all!=ans){
printf("%d-%02d-%02d\n",r[i].nian,r[i].yue,r[i].ri);
ans=r[i].all;
}
}
}
,,,,这种题如果细节地方处理不好,还是比较难的,咱就是说吃一堑长一智呗,以后做题记住就可以
本文讲述了作者在处理日期问题上的经历,通过大佬博客参考解决了蓝桥杯2017初赛中关于日期数字化和排序的问题,强调了细节处理在编程中的重要性。
496

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



