#include<bits/stdc++.h>
using namespace std;
int months[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
31};
//判断日期合法性
bool check_date(int date){ //date=2014 10 23
int year = date/10000; //分离出年 -->2014
int month = date%10000/100; //分离出月 %10000后:1023 再/100后-->10
int day = date%100; //分离出日 --> 23
//判断所拿到的数据是否合法
if(!day||month<=0||month>12) return false;
if(month !=2 && day>months[month]) return false;
//如果是2月 判断闰年情况
if(month==2)
if((year%4==0 && year%100!=0) || year%400==0){
//是闰年
if(day>29) return false;
else{
if(day>28) return false;
}
}
return true;
}
//判断是否是回文数 -->8位数--》头尾相等
bool check_huiwenshu(string str){
for(int i=0,j=(str.length()-1);i<j;i++,j--){ ////两个变量当两个指针, 一个从头一个从尾用if判断
if(str[i] != str[j]) return false;
}
return true;
}
//判断回文数是否是ABABBABA型
bool check_ABABBABA(string str){
//先判断是否是回文数
if(check_huiwenshu(str)){
//在判断是否是 ABABBABA型
if(str[0] != str[2] || str[1] != str[3]) return false;
return true;
}
return false;
}
int main(){
int date,flag=0;
cin>>date;
for(int i=date+1;;i++){
if(check_date(i)){ //判断日期是否合法
string str=to_string(i); ////判断完后将年月日从数字转化为字符串,方便进行回文判断
if(check_huiwenshu(str) && !flag){ //判断是否是回文数
cout<<i<<endl;
flag=1;
}
if(check_ABABBABA(str)){ //判断是否是ABABBABA型
cout<<i<<endl;
return 0;
}
}
}
return 0;
}
0 回复
0 转发
0 喜欢
1 阅读



