[蓝桥杯 2017 省 B] 日期问题

简介: [蓝桥杯 2017 省 B] 日期问题

题目描述

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 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

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int a, b, c;
    scanf("%d/%d/%d", &a, &b, &c);
    int month[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int y, m, d;
    for (y = 1960; y <= 2059; y++)
    {
        if (y % 100 != 0 && y % 4 == 0 || y % 400 == 0) month[2] = 29;
        else month[2] = 28;
        for (m = 1; m <= 12; m++)
        {
            for (d = 1; d <= month[m]; d++)
            {
                if (a == y % 10 + y / 10 % 10 * 10 && m == b && d == c ||
                    a == m && b == d && c == y % 10 + y / 10 % 10 * 10 ||
                    a == d && b == m && c == y % 10 + y / 10 % 10 * 10)
                {
                    printf("%d-%02d-%02d\n", y, m, d);
                }
            }
        }
    }
    return 0;
}
目录
相关文章
|
11天前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
19 2
|
2月前
|
C++
第十三届蓝桥杯B组C++(试题B:顺子日期)
第十三届蓝桥杯B组C++(试题B:顺子日期)
59 0
|
12月前
【蓝桥杯冲刺】日期类专题特训
【蓝桥杯冲刺】日期类专题特训
34 0
|
C++
第十一届蓝桥杯省赛 C++ B组 - 回文日期
第十一届蓝桥杯省赛 C++ B组 - 回文日期
62 0
|
机器学习/深度学习 测试技术
[蓝桥杯 2020 省 AB2] 回文日期
[蓝桥杯 2020 省 AB2] 回文日期
76 0
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
第14届蓝桥杯第三次模拟赛:3日期相等
第14届蓝桥杯第三次模拟赛:3日期相等
78 0
|
Java 测试技术 C语言
【蓝桥杯基础题】2020年省赛填空题—回文日期
【蓝桥杯基础题】2020年省赛填空题—回文日期
202 0
【蓝桥杯基础题】2020年省赛填空题—回文日期
|
Python
蓝桥杯 试题G 回文日期 Python 枚举法
蓝桥杯 试题G 回文日期 Python 枚举法
63 0
蓝桥杯 试题G 回文日期 Python 枚举法