维生素C吃多了会上火-个人CSDN博文目录 2022蓝桥杯
题目链接
回文日期
题解
坑:数字要满足日期格式,N虽然只有89991231,但是遍历要遍历完
#include <iostream>
using namespace std;
int a[10];
int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool judge(int x){
int cnt=0;
memset(a,0,sizeof(a));
while(x){
a[cnt++]=x%10;
x/=10;
}
for(int i=0;i<4;i++){
if(a[i]!=a[7-i]) return false;
}
return true;
}
bool time(int x){
int year = x/10000;
int month = (x%10000)/100;
int day = x%100;
if(year%4==0&&year%100!=0||year%400==0) months[2]=29;
else months[2]=28;
if(month>=1&&month<=12&&day>=1&&day<=months[month]) return true;
else return false;
}
bool judge2(int x){
if(judge(x)){
if(a[0]==a[2]&&a[1]==a[3]) return true;
else return false;
}
}
int main()
{
int n;
cin>>n;
int flag1=1,flag2=1;
for(int i=n+1;i<=100000000;i++){
if(judge(i)&&flag1){
if(time(i)){
cout<<i<<endl;
flag1=0;
}
}
if(judge2(i)&&flag2){
if(time(i)){
cout<<i<<endl;
flag2=0;
}
}
if(flag1==0&&flag2==0) break;
}
return 0;
}
|