思路
一开始的思路是纯暴力 , 即逐个按照年, 月, 日枚举, 但发现这样会很慢
其实只需要枚举一年中的月和日, 构造回文串 , 看看是不是在这个区间里就行了
这样最多只需要枚举366种可能
ac 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int inf = INT_MAX;
typedef pair<int, int> pii;
typedef priority_queue<int, vector<int>, greater<int>> small_heap;
#define int long long
int32_t main()
{
short days[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int date1, date2;
cin >> date1 >> date2;
int ans = 0;
for (int m = 1; m <= 12; m++)
for (int d = 1; d <= days[m]; d++)
{ // 构造回文年 例如 1202 构造date是 20121202
int ye = d % 10 * 1000 + d / 10 * 100 + m % 10 * 10 + m / 10;
int date = ye * 10000 + m * 100 + d;
if (date1 <= date && date <= date2)
ans++;
}
printf("%d\n" , ans);
return 0;
}