资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。
有人表示20200202是“千年一遇”的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:20211202,即2021年12月2日。
也有人表示20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个ABABBABA 型的回文日期:21211212即2121年12月12日。算不上“千年一遇”,顶多算“千年两遇”。
给定一个8位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。
输入格式
输入包含一个八位整数N,表示日期。
输出格式
输出两行,每行1个八位数。第一行表示下一个回文日期,第二行表示下一个ABABBABA型的回文日期。
样例输入
20200202 |
---|
样例输出
20211202 |
---|
21211212 |
评测用例规模与约定
对于所有评测用例,10000101<=N<=89991231, 保证N是一个合法日期的 8 位数表示。
代码:
#include<stdio.h>
int main()
{
int year,month,day,ymd;
scanf("%d",&ymd);
year=ymd/10000;
month=(ymd/100)%100;
day=ymd%100;
int y,m,d;
int flag1=0,flag2=0;
for(y=year;y<=9999;y++)
{
if(m>12)
month=1;
for(m=month;m<=12;m++)
{
if(d>31)
day=0;
for(d=day+1;d<=31;d++)
{
if(y/1000==d%10&&(y/100)%10==(d/10)%10&&(y/10)%10==m%10&&y%10==(m/10)%10&&flag1==0)
{
printf("%d%d%d%d%d\n",y,(m/10)%10,m%10,(d/10)%10,d%10);
flag1=1;
}
if(y/1000==(y/10)%10&&(y/10)%10==m%10&&(y/10)%10==d%10&&(y/100)%10==y%10&&(y/100)%10==(m/10)%10&&(m/10)%10==(d/10)%10&&flag2==0)
{
printf("%d%d%d%d%d\n",y,(m/10)%10,m%10,(d/10)%10,d%10);
flag2=1;
}
}
}
}
return 0;
}