题目
暴力循环+判断
#include <iostream>
using namespace std;
int months[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check(int y,int m,int d) //判断是否是合法日期
{
if (d<=0||m<=0||m>=13)
return false;
if (m!=2){
if(d>months[m])
return false;
}else{
int days=months[2]+(y%4==0&&y%100!=0||y%400==0);
if(d>days)
return false;
}
return true;
}
int main(){
int i,n,a,b,c,d,e,f,g,h;
int j=0;
scanf("%d",&n);
for(i=n+1;i<=99991231;i++)
{
a = i%10;
b = (i/10)%10;
c = (i/100)%10;
d = (i/1000)%10;
e = (i/10000)%10;
f = (i/100000)%10;
g = (i/1000000)%10;
h = (i/10000000)%10;
int yy,mm,dd;
yy=h*1000+g*100+f*10+e;
mm=d*10+c;
dd=b*10+a;
if(!check(yy,mm,dd))continue;
if((a==h)&&(b==g)&&(c==f)&&(d==e))
{
if(j==0)
{
printf("%d\n",i);
j++;
}
}
if((a==h)&&(b==g)&&(c==f)&&(d==e)&&(a==c)&&(b==d))
{
printf("%d",i);
break;
}
}
return 0;
}