题目链接:https://www.acwing.com/problem/content/description/2870/
这个回文日期要怎么优化才不超时呢
//找到一个年份,倒序输出符合条件就行
#include<iostream>
using namespace std;
bool is(int n){
int date[20]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int day=n%100;
int mon=(n%10000)/100;
int year=n/10000;
if((year%4==0&&year%100!=0)||year%400==0){
date[2]=29;
}
if(mon>0&&mon<=12&&day>0&&day<=date[mon]){
return true;
}
return false;
}
int main(){
int n;scanf("%d",&n);
bool flag_ex1=true;//第一个回文flag
bool flag_ex2=true;//第二个回文flag
while(n++){
string a=to_string(n);
if(!flag_ex1&&!flag_ex2)break;
if(is(n)){
//先判断是不是回文数
if(flag_ex1&&a[4]==a[3]&&a[2]==a[5]&&a[1]==a[6]&&a[0]==a[7]){
printf("%s\n",a);
flag_ex1=false;
}
if(a[4]==a[3]&&a[2]==a[5]&&a[1]==a[6]&&a[0]==a[7]&&a[0]==a[2]&&a[1]==a[3]&&a[0]!=a[1]){
printf("%s\n",a);
flag_ex2=false;
}
}
}
return 0;
}