解题思路:枚举每一天判断这一天是否符合要求
注意事项:
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分
2 人评分
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
WU-蓝桥杯算法提高VIP-交换Easy (C++代码)浏览:1186 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1267 |
回文数字 (C语言代码)浏览:2539 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:594 |
IP判断 (C语言代码)浏览:592 |
杨辉三角 (C语言代码)浏览:734 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:611 |
【魔板】 (C++代码)浏览:1236 |