AcWing 2867. 回文日期
原题链接
简单
作者:
此间
,
2021-03-18 21:13:24
,
所有人可见
,
阅读 416
#include <bits/stdc++.h>
using namespace std;
const int N=89991231 ;
int n;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isrun(int x){
if((x%100!=0&&x%4==0)||x%400==0)return true;
else return false ;
}
bool check_1(int x){
int y=x/10000,m=x%10000/100,d=x%100;
if(!m||m>12||!d)return false;
if(m!=2&&d>month[m])return false;
if(m==2){
if(isrun(y)){
if(d>29)return false;
}else {
if(d>28)return false;
}
}
}
bool check_2(int x){
int a[10];
for(int i=8;i>=1;i--){
a[i]=x%10;
x/=10;
}
if(a[1]==a[3]&&a[2]==a[4]&&a[1]!=a[2]&&a[3]!=a[4])return true;
else return false;
}
int main()
{
ios::sync_with_stdio;
cin>>n;
int flag=0;
for (int i = 1000; i <= 10000; i++) {
int x = i, r = i;
for (int j = 0; j < 4; j++) {
r = r * 10 + x % 10;
x /= 10;
}
if(!flag)
if (r > n && r <= 99999999 && check_1(r)) {cout<<r<<endl;flag=1;}
if(flag)
if (r > n && r <= 99999999 && check_1(r)&&check_2(r)) {cout<<r<<endl;break;}
}
return 0;
}