AC:
#include <bits/stdc++.h>
using namespace std;
int temp[10]; //容器
int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //一月大,二月平.....
bool hw(int x)
{
int tot = 0;
while (x) {
temp[tot ++] = x % 10; //把数字回文读入
x /= 10; //读入后就删除
} //这个时候存的就是x的回文数了
for (int i = 0; i < tot; i ++)
{
if (temp[i] != temp[tot - i - 1]){
return 0;
}
}
return 1;
}
//判断日期的合理性操作
bool check(int x)
{
int year = x / 10000;
int month = x % 10000 / 100;
int day = x % 100;
if (month <= 0 || month >= 13) return false;
if (day == 0 || month != 2 && day > m[month]) return false;
if (month == 2)
{
int leap = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
if (day > 28 + leap) return false;
}
return true;
}
int main()
{
int n;
cin >> n;
int ans1, ans2;
bool f = 0; //给f一个初始值
//该日期之后下一个回文日期 ans1
for (int i = n + 1; i <= 1e8; i ++) {
if (hw(i)) {
if (check(i)) {
ans1 = i;
if (temp[0] == temp[2] && temp[2] == temp[5] && temp[5] == temp[7] &&
temp[1] == temp[3] && temp[3] == temp[4] && temp[4] == temp[6]) {
ans2 = i;
f = 1;
}
break;
}
}
}
//下一个ABABBABA型的回文日期 ans2
if (!f) {
for (int i = ans1 + 1; i <= 1e8; i ++) {
if (hw(i)) {
if (check(i)) {
if (temp[0] == temp[2] && temp[2] == temp[5] && temp[5] == temp[7] &&
temp[1] == temp[3] && temp[3] == temp[4] && temp[4] == temp[6]) {
ans2 = i;
break;
}
}
}
}
}
cout << ans1 << endl << ans2 << endl; //其实用printf速度更快
return 0;
}