回文日期【第十一届】【省赛】【B组】
属于是暴力枚举,硬座,好在题目给的数字并不大,算法很简单,一看就会。
下面请看代码部分。
C语言实现过程如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
int a[10],num,temp;
int i,j;
scanf("%d",&num);
int flag=0,result1=0,result2=0;
for(i=num+1; i<99999999; i++)
{
for(j=0; j<8; j++)
{
temp=i;
temp=temp/(pow(10,7-j));
a[j]=temp%10;
} //将正在处理的数字放入数组
if(a[4]==a[5]&&a[4]==0)
continue;
if(a[6]==a[7]&&a[7]==0)
continue;
if(a[4]*10+a[5]>12)
{
i=i-1300+10000; //如果已经超过了12月,那就直接跳到下一个月份开始的地方
continue;
}
if(a[6]*10+a[7]>31)
continue; //continul都是拿来排除不符合月份规定的数字
if((a[0]==a[7])&&(a[1]==a[6])&&(a[2]==a[5])&&(a[3]==a[4]))
{
if(flag==0)
{
result1=i;
flag=1;
}
if(a[0]==a[2]&&a[0]==a[5]&&a[0]==a[7]&&a[1]==a[3]&&a[1]==a[4]&&a[1]==a[6])
{
result2=i;
break;
}
}
}
printf("%d\n",result1);
printf("%d\n",result2);
return 0;
}