输入一个合法的日期例如:20191212
输出在此之后的所有合法的ABABBABA型日期
输入10000101
输出第一行:10011001
第二行:10100101
第一行为最近一个普通的回文日期,第二行为ABAB型回文日期
package 回顾练习蓝桥杯;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int date = sc.nextInt();
System.out.println(f(date));
System.out.println(p(date));
}
private static String p(int date) {
int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int a1 = date/10000;
int a2 = date/100%100;
int a3 = date%100;
String s = new String();
if (a1%4==0&&a1%100!=0||a1%400==0) {//处理一下闰年的问题
a[2]=29;
}
jj:for (int i = a1; i <= 9999; i++) {
for (int j = 1; j <= 12; j++) {
for (int k = 1; k <= a[j]; k++) {
String string = check(i,j,k);
int q1 = fen(string,0);//A
int q2 = fen(string,1);
int q3 = fen(string,2);//A
int q4 = fen(string,3);
int q5 = fen(string,4);
int q6 = fen(string,5);//A
int q7 = fen(string,6);
int q8 = fen(string,7);//A
if (q1==q3&&q3==q6&&q6==q8&&q2==q4&&q4==q5&&q5==q7) {
s = string;
break jj;
}
}
}
}
return s;
}
private static int fen(String string, int i) {
return Integer.parseInt(string.substring(i,i+1));
}
private static String check(int i, int j, int k) {
if (j<10&&k<10) {
return ""+i+0+j+0+k;
}else if (j<10&&k>=10) {
return ""+i+0+j+k;
}else if (j>=10&&k<10) {
return ""+i+j+0+k;
}else {
return ""+i+j+k;
}
}
private static String f(int date) {
int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int a1 = date/10000;
int a2 = date/100%100;
int a3 = date%100;
String s = new String();
if (a1%4==0&&a1%100!=0||a1%400==0) {//处理一下闰年的问题
a[2]=29;
}
jj:for (int i = a1; i <= 9999; i++) {
for (int j = 1; j <= 12; j++) {
for (int k = 1; k <= a[j]; k++) {
String string = check(i,j,k);
int q1 = fen(string,0);
int q2 = fen(string,1);
int q3 = fen(string,2);
int q4 = fen(string,3);
int q5 = fen(string,4);
int q6 = fen(string,5);
int q7 = fen(string,6);
int q8 = fen(string,7);
if (q4==q5&&q3==q6&q2==q7&&q1==q8) {
s = string;
break jj;
}
}
}
}
return s;
}
}