import java.util.Scanner;
public class Main {
static int[] days = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String string = String.valueOf(n);
int n1 = -1;
int n2 =-1;
for(int i = n+1;i<=99999999;i++) {
if(checkDate(i)&&checkPalindrome(i)) {
if(n1==-1) {
n1 = i;
}
}
if(check(i)&&checkDate(i)) {
if(n1==-1) {
n1 = i;
}
if(n2== -1) {
n2 = i;
}
}
if(n1!=-1&&n2!=-1) {
break;
}
}
System.out.println(n1);
System.out.println(n2);
}
public static boolean checkPalindrome(int number) {
String string = number+"";
int left = 0;
int right = string.length()-1;
while(left<right) {
if(string.charAt(left)!=string.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
public static boolean checkDate(int date) {
int year = date/10000;
int month = date%10000/100;
int day = date%100;
if(month<1||month>=13) {
return false;
}
if(month!=2&&day>days[month]) {
return false;
}
if(month==2) {
if(year%400==0||(year%4==0&&year%100!=0)) {
if(day>days[month]+1) {
return false;
}
}
}
return true;
}
public static boolean check(int number) {
int a = number % 10;
int b = number % 100 / 10;
if(a==b) {
return false;
}
String string = number + "";
char a1 = (char)(a+'0');
char b1 = (char)(b+'0');
// 检查是否为 ABABBABA
if(string.charAt(0)!=a1||string.charAt(2)!=a1||string.charAt(5)!=a1||string.charAt(7)!=a1) {
return false;
}
if(string.charAt(1)!=b1||string.charAt(3)!=b1||string.charAt(4)!=b1||string.charAt(6)!=b1) {
return false;
}
return true;
}
}
主要就包含三个函数,主函数不用去取对称,然后再判断回文,会有问题~