题目如下:
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在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>
不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。

看着挺简单

但是我感觉挺坑爹的。

代码如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

typedef struct{
    int year, month, day;
}date;

bool isyn(int y){
    return (y % 4 == 0) || (y % 100 && y % 400 == 0);
}

void print(const date &d){
    printf("%02d-%02d-%02d\n", d.year, d.month, d.day);
}

bool compare(const date &d1, const date &d2){
    if(d1.year != d2.year){
        return d1.year < d2.year;
    }
    if(d1.month != d2.month){
        return d1.month < d2.month;
    }
    return d1.day < d2.day;
}

bool check(const date &d){
    static int month_days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if(isyn(d.year)){
        month_days[2] = 29;
    }else{
        month_days[2] = 28;
    }

if(d.year < 1960 || d.year > 2059){
        return false;
    }
    if(d.month < 1 || d.month > 12){
        return false;
    }
    if(d.day < 1 || d.day > month_days[d.month]){
        return false;
    }
}

int main()
{
    int aa, bb, cc;
    scanf("%d/%d/%d", &aa, &bb, &cc);
    date d[6] = {
        {2000 + aa, bb, cc},
        {1900 + aa, bb, cc},
        {2000 + cc, aa, bb},
        {1900 + cc, aa, bb},
        {2000 + cc, bb, aa},
        {1900 + cc, bb, aa}
    };
    sort(d, d + 6, compare);
    for(int i = 0; i < 6; ++ i){
        if(check(d[i])){
            print(d[i]);
        }
    }
    return 0;
}

第八届蓝桥杯第七题日期问题相关推荐

  1. 【第八届蓝桥杯第七题日期问题】

    [第八届蓝桥杯第七题日期问题] Description 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期 ...

  2. 第八届蓝桥杯第八题日期问题

    标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...

  3. 第八届蓝桥杯第八题--包子凑数(C语言)

    第八届蓝桥杯第八题–包子凑数(C语言) 一.比赛题目 1.题目要求 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为 ...

  4. 第八届蓝桥杯-第四题方格分割

    标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分.  要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算:  包括这3种分法在内,一共 ...

  5. 第八届蓝桥杯_第一题_迷宫

    感觉蓝桥杯一年比一年难,今年第一题就做了好久. 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上. 它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母. 我们假设玩家是面朝上坡 ...

  6. 第八届蓝桥杯第五题取数位

    题目如下: 求1个整数的第k位数字有很多种方法. 以下的方法就是一种. // 求x用10进制表示时的数位长度 int len(int x){  if(x<10) return 1;  retur ...

  7. 第八届蓝桥杯 java B组 日期问题

    标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...

  8. 第八届蓝桥杯第十题 k倍区间

    给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间.  你能求出 ...

  9. 第八届蓝桥杯第四题方格分割

    题目如下: 标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在 ...

最新文章

  1. mysql安装的根目录_MySql安装及基础配置(一)
  2. 人人都是 DBA(VII)B 树和 B+ 树
  3. AcWing 845. 八数码(3阶数字华容道):bfs求最短路,状态表示困难
  4. audio标签控制音量_HTML5中audio与video标签的使用
  5. 理解 React Hooks
  6. JavaScript jQuery获取radio/下拉框的选中值
  7. 从用户的角度看 c语言中函数有两种,【南开大学】20秋学期(1709、1803、1809、1903、1909、2003、2009 )《C语言程序设计》在线作业答卷...
  8. iPhone 14 Pro将采用开孔全面屏:明年iPhone 15全系标配
  9. Javascript的数组操作(笔记)
  10. datatable排序:DataTable的排序、检索、合并
  11. 关于OMC链接LANSWITCH
  12. 软件工程专业英语专用名词翻译
  13. Win10+Ubuntu+Deepin+macOS+PhoenixOS+FydeOS+centOS+openSUSE+Kylin+ChromeOS+RedFlag等多系统安装(包含rEFind引导)
  14. allpairs工具的使用
  15. 电脑常用快捷键的使用
  16. 用Xilinx的FPGA实现HDMI(DVI)接收器
  17. Excel中如何实现批量中文转拼音
  18. Introduction to Graph Neural Network(图神经网络概论)翻译:Chapter2:Basic of Math and Graph
  19. 使用Cpoly.f90注意事项
  20. OA系统:搭建项目框架

热门文章

  1. Shell脚本学习-阶段十三-在 Linux 中使用日志来排错
  2. hadoop3.1集成tez和tez-ui
  3. Linux Platform驱动模型(三) _platform+cdev
  4. CSS边距---盒子模型
  5. LVM逻辑卷分区笔记
  6. 接收list参数_Python 犄角旮旯--List
  7. jquery-validation 使用
  8. JSON值的类型:数字,字符串,逻辑值,数组,对象,null
  9. 英文教材《FPGA-Prototyping-By-Verilog-Examples》下载
  10. Ubuntu 下 svn 服务器的安装配置