#include <bits/stdc++.h>
using namespace std;
int date1,date2;
/*
1. 枚举回文日期
2. 判断是否在日期范围内
3. 判断该回文是否合法
判断闰年:能被400整除 || 不能被100整除&&能被4整除
*/
int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_valid(int date){
if(date == 92200229) return true; // 特判闰月
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]) return false;
return true;
}
int main(){
cin >> date1 >> date2;
int cnt = 0;
// 枚举回文日期
for(int date = 1000;date < 10000;date++){
// 构造回文日期 -> 1000 0001
int d = date,temp = date;
while(temp){
d = d * 10 + temp % 10;
temp /= 10;
}
// 判断是否在日期范围内
if(date1 <= d && date2 >= d){
// 判断该回文是否合法
if(check_valid(d)) cnt++;
}
}
cout << cnt << endl;
}
466. 回文日期
最新推荐文章于 2024-08-09 10:25:03 发布