只看后四位,月份和日期,若想整个日期回文,后四位必须与年份回文,所以只看与年份回文的日期在当年中是否合法
#include <stdio.h>
#include <stdlib.h>
int arr[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int huiwen(int a)
{
return a*10000+a%10*1000+a/10%10*100+a/100%10*10+a/1000%10;
}
int run(int a)
{
if((a%4==0 && a%100!=0)||a%400==0)
return 0;
else
return 1;
}
int infer(int a)
{
int A=huiwen(a);
int month=A/100%100;
int day=A%100;
if(day==0 || month==0 || month>12)
return 0;
if(run(a) && month==2 && day==29)
return 0;
if(arr[month]<day)
return 0;
return 1;
}
int main(int argc, char *argv[])
{
int date1,date2,i,ans=0;
scanf("%d %d",&date1,&date2);
for(i=date1/10000;i<=date2/10000;i++)
{
if(huiwen(i)>=date1 && huiwen(i)<=date2 && infer(i))
ans++;
}
printf("%d",ans);
return 0;
}