一、题意分析:
二、思路分析:
一道大模拟题, 核心关键主要在于检查日期是否合法即可.
三、AC Code:
#include <bits/stdc++.h>
using namespace std;
int date1, date2, cnt;
// 检查日期是否合法
bool check(int year, int month, int day) {
if (day <= 0) return false; // 非法日期
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { // 大月
return day <= 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月
return day <= 30;
} else if (month == 2) { // 2月
if (year % 4 == 0) { // 闰年
return day <= 29;
} else { // 平年
return day <= 28;
}
} else { // 非法月份
return false;
}
}
int main() {
scanf("%d%d", &date1, &date2);
int year1 = date1 / 10000, year2 = date2 / 10000;
for (; year1 <= year2; year1++) {
int month = year1 % 10 * 10 + year1 / 10 % 10;
int day = year1 / 100 % 10 * 10 + year1 / 1000;
if (check(year1, month, day)) {
int date = year1 * 10000 + month * 100 + day;
if (date >= date1 && date <= date2) cnt++;
}
}
cout << cnt << endl;
return 0;
}