**大体思路:
首先从前四位数找出后四位数形成回行数,
int i=1234;
int x=i,date =i;
因为是四位数的回行数所以进行四次循环
for(int j=0;j<4;j++)date=date*10+x%10,x/=10;
得出的最后的date是12344321;
第二步,判断得出的回文数字是否在输入的日期之间,这里用数字的大小判断就行。
第三步,检查日期是否符合要求,将得到的回文日期用check函数代入,算出day,month,year;
再特判day是否会超过days【month】这个时候不考虑为二月的情况,因为二月为闰年与否还需要特判,
判断month是否==0或者>12
最后再对二月进行特判,巧妙地运用了逻辑运算符的0/1性质,成立为1不成立为0,
当year能被400整除时或者year能被4整除且不能被100整除,这里的`year%100&&year%4==0`就很细节,
再对day是否会大于28+leap上进行判断**
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int date1,date2,ans=0,date;
bool chec(int date)
{
int year=date/10000;
int month=date%10000/100;
int day=date%100;
if(month==0||month>12)return false;
if(day==0||day>days[month]&&month!=2)return false;
if(month==2)
{
int leap=year%400==0||year%4==0&&year%100;
if(day>28+leap)return false;
}return true;
}
int main()
{
cin>>date1>>date2;
for(int i=1000;i<=9999;i)
{ int date=i,x=i;
for(int i=0;i<4;i) date=date*10+x%10,x/=10;
// cout<[HTML_REMOVED]=date1&&date<=date2)ans++;
}
cout<<ans;
return 0;
}
```