• 蓝桥杯每日一题20233.10.10


    题目描述

    回文日期 - 蓝桥云课 (lanqiao.cn)

    题目分析 

    对于此题,我们最先想到的是暴力解法,将每一种情况经行循环查找,在查找的过程中记录下答案,回文日期就是字符串判断回文,ABABBABA型回文日期可以将回文经行特判从而确定

    1. #include
    2. using namespace std;
    3. int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    4. int nx, ans, f1, f2;
    5. string ans1, ans2;
    6. bool is_ren(int n)
    7. {
    8. if(n % 400 == 0 || (n % 100 != 0 && n & 4 == 0))return true;
    9. return false;
    10. }
    11. bool flag1(string s)
    12. {
    13. int n = s.size();
    14. for(int i = 0; i < n / 2; i ++)
    15. {
    16. if(s[i] != s[n - i - 1])return false;
    17. }
    18. ans1 = s;
    19. return true;
    20. }
    21. bool flag2(string s)
    22. {
    23. int n = s.size();
    24. for(int i = 0; i < n / 2; i ++)
    25. {
    26. if(s[i] != s[n - i - 1])return false;
    27. }
    28. if(s[0] == s[2] && s[2] == s[5] && s[5] == s[7] && s[1] == s[3] && s[3] == s[4] && s[4] == s[6] && s[0] != s[1])
    29. {
    30. ans2 = s;
    31. return true;
    32. }
    33. return false;
    34. }
    35. int main()
    36. {
    37. ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    38. cin >> nx;
    39. //算出输入的年月日
    40. int y = nx / 10000;
    41. int mo = nx / 100 % 100;
    42. int d = nx % 100;
    43. //从输入的年开始(2020是随意的数字)
    44. for(int i = y; i <= 10000; i ++)
    45. {
    46. if(is_ren(i))m[2] = 29;
    47. else m[2] = 28;
    48. for(int j = 1; j <= 12; j ++)
    49. {
    50. for(int k = 1; k <= m[j]; k ++)
    51. {
    52. if(i == y && j == 1 && k == 1)//如果是刚进入循环的时候,因为此时当天不算故看下一天是哪一天
    53. {
    54. if(d + 1 <= m[mo])//下一天不跨月
    55. {
    56. j = mo;
    57. k = d + 1;
    58. }
    59. else if(mo + 1 <= 12)//下一天跨月不跨年
    60. {
    61. j = mo + 1;
    62. k = 1;
    63. }
    64. else//下一天跨年
    65. {
    66. i = y ++;
    67. j = 1;
    68. k = 1;
    69. }
    70. }
    71. //将这一天转为字符串进行判断
    72. string s = "";
    73. s += to_string(i);
    74. if(j < 10)s += to_string(0);
    75. s += to_string(j);
    76. if(k < 10)s += to_string(0);
    77. s += to_string (k);
    78. if(ans1.size() != 8)flag1(s);
    79. if(ans2.size() != 8)flag2(s);
    80. if(ans1.size() == 8 && ans2.size() == 8)break;
    81. }
    82. if(ans1.size() == 8 && ans2.size() == 8)break;
    83. }
    84. if(ans1.size() == 8 && ans2.size() == 8)break;
    85. }
    86. cout << ans1 << '\n' << ans2;
    87. return 0;
    88. }
  • 相关阅读:
    ORA-16171当DG出现GAP的时候,如何强制启动备库
    DAPS~5G NR双激活协议栈
    flink学习
    【Vue基础一】
    File Inclusion 全级别
    k8s helm spring 应用
    圈铁发音,动感与无噪强强出彩,魔浪HIFIair蓝牙耳机测评
    Nautilus无法创建下列所需的文件夹:/home/user/Desktop 报错解决
    SQL必需掌握的100个重要知识点:管理事务处理
    用AI打造一个属于自己的歌手,让她C位霸气出道
  • 原文地址:https://blog.csdn.net/m0_75087931/article/details/133745087