穷举月和日,构造回文日期,再判断日期的合法性与是否符合范围要求。
#include <iostream>
using namespace std;
int md[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };
bool check(int date)
{
int y = date / 10000, m = date % 10000 / 100,d = date % 100;
if (!(y / 1000)) return false;
if ((m > 12) || (d > md[m])) return false;
if ((m == 2) && (d == 29) && !((y % 400==0) || ((y % 4==0)&&(y%100!=0)))) return false;
return true;
}
int main()
{
int date1 = 0, date2 = 0,count=0;
cin >> date1 >> date2;
for (int i = 101; i < 10000; i++)
{
int t = i,date=i,d=1e+7;
for (int j = 1; j <= 4; j++)
{
date += t % 10 * d;
t /= 10;
d /= 10;
}
if ((date <= date2) && (date >= date1) && check(date)) count++;
}
cout << count;
return 0;
}


京公网安备 11010502036488号