题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期

简介: 题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期

这一题坑比较多,不注意的话就只能拿80到90分,有点坑。

思路暴力搜索即可。

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int monthd[13] = {31,28,31,30,31,31,30,31,30,31,30,31,29};//日期题目通用数组
int tf(int num){//判断是否回文数
  string s;
  while(num>0){
    s.push_back(num%10+'0');
    num/=10;
  }
  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]){//特殊回文数,1成立也代表0成立。
    return 1;
  }
  else if(s[0]==s[7]&&s[1]==s[6]&&s[2]==s[5]&&s[3]==s[4]){
    return 0;
  }
  else return -1;//都不是返回-1;
}
int main(){
  int N;
  cin>>N;
  int year = N/10000;
  int month = (N % 10000)/100;
  int day = N % 100;
  bool a = false,b = false;
  for(int i = year;i <= 10000; i++){//这里题目说明N<=8999但是答案不一定小于8999,要小心描述陷阱
    for(int j = 1;j <= 12; j++){//月份
      int k = monthd[j-1];//这里直接给天数赋值
      if(year%4==0)
        k = monthd[12];//闰年2月取29天
      for(int l = 1;l <= k; l++){
        if(a&&b){//如果都找到了,直接return 0;
        return 0;
        }
        int ymd = i * 10000 + j * 100 + l;
        if(ymd==N)continue;//起点不能算进内
        if(tf(ymd)==1&&!a){//找到特殊回文日期
          a = true;
          cout<<ymd<<endl;
          if(!b){//假如b还没找到,一并输出
            b = true;
            cout<<ymd<<endl;
          }
        }
        if(tf(ymd)==0&&!b){//普通的先找到
          b = true;
          cout<<ymd<<endl;
        }
      }
    }
  }
  return 0;
}

三个细节:

1、找到的数不能等于起点。

2、有可能普通的没找到先找到特殊的,这时候需要再补一个条件,将特殊的再输出一遍。

3、题目描述年份的范围和题解不同,要是没确定好边界就会少分。

相关文章
|
17天前
蓝桥杯真题time模块详解 | 顺子日期 星期一
蓝桥杯真题time模块详解 | 顺子日期 星期一
|
4月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
46 2
|
4月前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
5月前
|
存储 人工智能 算法
第十四届蓝桥杯C++B组编程题题目以及题解
第十四届蓝桥杯C++B组编程题题目以及题解
|
5月前
|
测试技术
题目1444:蓝桥杯2014年第五届真题斐波那契
题目1444:蓝桥杯2014年第五届真题斐波那契
53 0
|
5月前
|
C++
第十三届蓝桥杯B组C++(试题B:顺子日期)
第十三届蓝桥杯B组C++(试题B:顺子日期)
78 0
【蓝桥杯冲刺】日期类专题特训
【蓝桥杯冲刺】日期类专题特训
43 0
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
146 0
蓝桥杯AcWing 题目题解 - 递归与递推
蓝桥杯AcWing 题目题解 - 递归与递推
|
C++
第十一届蓝桥杯省赛 C++ B组 - 回文日期
第十一届蓝桥杯省赛 C++ B组 - 回文日期
72 0