题目:
思路:
两种形式:
abcddcba
ababbaba
考虑每个月的日子是否合规,可以用个数组:
int moon[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
考虑2月份的2.29日(每四年一次 闰年,2024年、2028年......)
即 92200229,合规,则无需判断
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int a[8];
int n1;
int moon[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int reserve(int i) {
a[0] = i % 10;
i /= 10;
a[1] = i % 10;
i /= 10;
a[2] = i % 10;
i /= 10;
a[3] = i;
int y = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
return y;
}
bool check(int x) {
if (x <= n1)
return 0;
int temp = x % 10000;
int m = temp / 100;
int r = temp % 100;
if (m >= 1 && m <= 12 && r <= moon[m - 1]&&r>=1)
return 1;
return 0;
}
int main()
{
cin >> n1;
int i = n1 / 10000;
for (i; i < 9291; i++) {
int x = i * 10000 + reserve(i);
if (check(x)) {
cout << x << endl;
break;
}
}
int j = n1 / 1000000;
for(j;j<91;j++){
int n2 = j * 100+ j ;
n2 =n2*10000+ reserve(n2);
if (check(n2)){
cout<<n2<<endl;
break;
}
}
return 0;
}