当前位置:   article > 正文

[蓝桥杯 2020 省 AB2] 回文日期

[蓝桥杯 2020 省 ab2] 回文日期

题目描述

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 题)。

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int m[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
  5. int check1(int x, int y, int z)
  6. {
  7. int g[9];
  8. g[8] = z % 10;
  9. g[7] = z / 10;
  10. g[6] = y % 10;
  11. g[5] = y / 10;
  12. g[4] = x % 10;
  13. g[3] = x / 10 % 10;
  14. g[2] = x / 100 % 10;
  15. g[1] = x / 1000;
  16. for (int i = 1, j = 8; i < j; i++, j--)
  17. {
  18. if (g[i] != g[j]) return 0;
  19. }
  20. return 1;
  21. }
  22. int check2(int x, int y, int z)
  23. {
  24. int g[9];
  25. g[8] = z % 10;
  26. g[7] = z / 10;
  27. g[6] = y % 10;
  28. g[5] = y / 10;
  29. g[4] = x % 10;
  30. g[3] = x / 10 % 10;
  31. g[2] = x / 100 % 10;
  32. g[1] = x / 1000;
  33. if (g[1] == g[3] && g[1] == g[6] && g[1] == g[8]
  34. && g[2] == g[4] && g[2] == g[5] && g[2] == g[7])
  35. return 1;
  36. else return 0;
  37. }
  38. int main()
  39. {
  40. int g;
  41. cin >> g;
  42. int year1 = g / 10000,
  43. month1 = g / 100 % 10 + g / 1000 % 10 * 10,
  44. day1 = g % 10 + g / 10 % 10 * 10;
  45. int flag1 = 0, flag2 = 0, cnt = 0;
  46. int a1, a2, b1, b2, c1, c2;
  47. for (int year= year1; year < 9999; year++)
  48. {
  49. if (year % 4 == 0 && year % 1 != 0 || year % 400 == 0) m[2] = 19;
  50. else m[2] = 28;
  51. for (int month = 1; month < 13; month++)
  52. {
  53. for (int day=1; day <= m[month]; day++)
  54. {
  55. if (year == year1 && month == month1 && day == day1) continue;
  56. if (flag1 == 0)
  57. {
  58. if (check1(year, month, day))
  59. {
  60. a1 = year, b1 = month, c1 = day;
  61. flag1 = 1;
  62. }
  63. }
  64. if (flag2 == 0)
  65. {
  66. if (check2(year, month, day))
  67. {
  68. a2 = year, b2 = month, c2 = day;
  69. flag2 = 1;
  70. }
  71. }
  72. if (flag1 == 1 && flag2 == 1)
  73. {
  74. printf("%d%02d%02d\n", a1, b1, c1);
  75. printf("%d%02d%02d\n", a2, b2, c2);
  76. return 0;
  77. }
  78. }
  79. }
  80. }
  81. return 0;
  82. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/385403
推荐阅读
相关标签
  

闽ICP备14008679号