博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第八届蓝桥杯省赛第七题---日期问题
阅读量:5024 次
发布时间:2019-06-12

本文共 2248 字,大约阅读时间需要 7 分钟。

标题:日期问题

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。

比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。

给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?

输入

----
一个日期,格式是"AA/BB/CC"。 (0 <= A, B, C <= 9)

输入

----
输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。

样例输入

----
02/03/04

样例输出

----
2002-03-04
2004-02-03
2004-03-02

资源约定:

峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

注意:

main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>

 

分析:

1. 设置一个日期类(感觉日期问题这样写不错),编写判断日期格式函数,自定义排序

2. 输入可以用 scanf("%d/%d/%d") 直接输入整型数

3. insert(年, 月, 日) , insert(日,月,年), insert(日,年,月), 可以插入到set中,自动进行删选重复和进行排序

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 int mon_day[]={
0,31,28,31,30,31,30,31,31,30,31,30,31}; 9 10 class Date{11 public:12 Date(int y=0,int m=0,int d=0):year(y),month(m),day(d){}13 bool isLeap(int year){14 return (year%4==0&&year%100!=0)||(year%400==0);15 }16 /*重载
<号排序* 17 bool operator<(const date& b) const{18 if(this->
year==b.year){19 if(this->month==b.month){20 return this->day
month
year
2059) return false;29 if(isLeap(year)){ //是闰年30 if(month<=0||month>12) return false;31 if(month==2) day<=mon_day[month]+1;32 return day>=1&&day<=mon_day[month];33 }34 else{ //不是闰年35 if(month<=0||month>12) return false;36 return day>=1&&day<=mon_day[month];37 }38 }39 40 public:41 int year;42 int month;43 int day;44 };45 /*46 class flag{//自定义排序47 public:48 bool operator()(Date a,Date b){49 if(a.year==b.year){50 if(a.month==b.month){51 return a.day
ss;61 void Insert(int y,int m,int d){62 Date dd(y,m,d);63 if(dd.valid()){64 ss.insert(dd);65 }66 }67 68 int main(){69 int y,m,d;70 scanf("%d/%d/%d",&y,&m,&d);71 //年月日72 Insert(1900+y,m,d);73 Insert(2000+y,m,d);74 //日月年75 Insert(1900+d,m,y);76 Insert(2000+d,m,y);77 //月日年78 Insert(1900+d,y,m);79 Insert(2000+d,y,m);80 81 set
::iterator it;82 for( it=ss.begin(); it!=ss.end(); it++ ){83 printf("%d-%02d-%02d\n",(*it).year,(*it).month,(*it).day);84 }85 return 0;86 }

 

转载于:https://www.cnblogs.com/Bravewtz/p/10345620.html

你可能感兴趣的文章
Feign使用Hystrix无效原因及解决方法
查看>>
Sizeof与Strlen的区别与联系
查看>>
hadoop2.2.0_hbase0.96_zookeeper3.4.5全分布式安装文档下载
查看>>
Flutter 贝塞尔曲线切割
查看>>
golang 的编译安装以及supervisord部署
查看>>
easyui源码翻译1.32--Dialog(对话框窗口)
查看>>
阿里架构师,讲述基于微服务的软件架构模式
查看>>
Eclipse导入maven项目时,Pom.xml文件报错处理方法
查看>>
01、JAVA开发准备
查看>>
asp.net mvc 错误处理 - 自定义报错处理,生成错误日志
查看>>
Linux centos ssh
查看>>
R语言之避免for循环示例
查看>>
[转]jQuery 选择器和dom操作
查看>>
Jenkins+Maven+SVN快速搭建持续集成环境(转)
查看>>
bootstrap 媒体查询
查看>>
杜教筛
查看>>
《Ext JS模板与组件基本知识框架图----模板》
查看>>
txmpp
查看>>
微信开发时调用jssdk,在安卓设备中成功调用;在ios设备中返回错误消息:config fail,无其他具体错误消息,且接口权限显示获取ok,无法调用...
查看>>
【Github教程】史上最全github使用方法:github入门到精通
查看>>