赞
踩
2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 yyyymmdd 的格式写成一个 88 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。
有人表示 20200202 是“千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。
也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年12 月12 日。算不上“千年一遇”,顶多算“千年两遇”。
给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。
输入包含一个八位整数 NN,表示日期。
输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下 一个 ABABBABA 型的回文日期。
输入
20200202
输出
20211202
21211212
对于所有评测用例,1≤N≤92200229,保证 N是一个合法日期的 8 位数表示。
蓝桥杯 2020 第二轮省赛 A 组 G 题(B 组 G 题)。
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int m[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
- int check1(int x, int y, int z)
- {
- int g[9];
- g[8] = z % 10;
- g[7] = z / 10;
- g[6] = y % 10;
- g[5] = y / 10;
- g[4] = x % 10;
- g[3] = x / 10 % 10;
- g[2] = x / 100 % 10;
- g[1] = x / 1000;
- for (int i = 1, j = 8; i < j; i++, j--)
- {
- if (g[i] != g[j]) return 0;
- }
- return 1;
- }
- int check2(int x, int y, int z)
- {
- int g[9];
- g[8] = z % 10;
- g[7] = z / 10;
- g[6] = y % 10;
- g[5] = y / 10;
- g[4] = x % 10;
- g[3] = x / 10 % 10;
- g[2] = x / 100 % 10;
- g[1] = x / 1000;
- if (g[1] == g[3] && g[1] == g[6] && g[1] == g[8]
- && g[2] == g[4] && g[2] == g[5] && g[2] == g[7])
- return 1;
- else return 0;
-
- }
- int main()
- {
- int g;
- cin >> g;
- int year1 = g / 10000,
- month1 = g / 100 % 10 + g / 1000 % 10 * 10,
- day1 = g % 10 + g / 10 % 10 * 10;
- int flag1 = 0, flag2 = 0, cnt = 0;
- int a1, a2, b1, b2, c1, c2;
- for (int year= year1; year < 9999; year++)
- {
- if (year % 4 == 0 && year % 1 != 0 || year % 400 == 0) m[2] = 19;
- else m[2] = 28;
- for (int month = 1; month < 13; month++)
- {
- for (int day=1; day <= m[month]; day++)
- {
-
- if (year == year1 && month == month1 && day == day1) continue;
-
-
- if (flag1 == 0)
- {
- if (check1(year, month, day))
- {
- a1 = year, b1 = month, c1 = day;
- flag1 = 1;
- }
- }
-
- if (flag2 == 0)
- {
- if (check2(year, month, day))
- {
- a2 = year, b2 = month, c2 = day;
- flag2 = 1;
- }
- }
-
- if (flag1 == 1 && flag2 == 1)
- {
- printf("%d%02d%02d\n", a1, b1, c1);
- printf("%d%02d%02d\n", a2, b2, c2);
- return 0;
- }
- }
- }
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。