解题思路:枚举每一天判断这一天是否符合要求

注意事项:

10000101 ≤ N ≤ 89991231

我们的判断就得是八位数的最大 年份最大为9999


参考代码:

#include<bits/stdc++.h>

using namespace std;

#define INF 998244353

const int MAX=2e5+10;

bool ishuiwen(int day)

{//先将day存到s中,再用双指针判断s是否回文 

string s;

while(day)

{

s+=day%10+'0';

day/=10;

}

for(int i=0,j=7;i<j;i++,j--)

{

if(s[i]!=s[j])return false;

}

return true;

}

bool isAB(int day)

{

string s;

while(day)

{

s+=day%10+'0';

day/=10;

}

if(s[0]==s[2]&&s[1]==s[3])return true;

return false;

}

int main()

{/*20200202

20211202

21211212

*/

int time;

cin>>time;

int monthdays[]={0 ,31 ,28 ,31, 30 ,31, 30, 31, 31 ,30 ,31, 30, 31};

    int res1;

    int flag=0;

    for(int year=1000;year<=9999;year++)

    {//遍历每一天 判断是否是回文和AB 

    if(year*10000+10000<time)continue;//比输入日期年份小就不走后边 

        for(int month=1;month<=12;month++)

        {

            int days=monthdays[month];

            if(month==2)

            {//闰年2月加一天 

                if((year%400==0)||(year%4==0&&year%100!=0))//闰年判断 

                days++;

            }

            

            for(int i=1;i<=days;i++)

            {

            int day=i+month*100+year*10000;

            if(ishuiwen(day))

            {          

            if(day<=time)continue;

            if(flag==0)

            res1=day;

             flag=1;

             if(isAB(day))

             {

             cout<<res1<<endl<<day<<endl;

             return 0;

             }

             }

            }

        }

    }

return 0;

}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论