AC

我是小学生  •  1天前


include <bits/stdc++.h>

using namespace std;

// 判断年份是否为闰年 bool run(int year) {

if (year % 400 == 0)
	return true;
if (year % 100 == 0)
	return false;
if (year % 4 == 0)
	return true;
return false;

}

// 判断日期是否合法 bool is(int year, int month, int day) {

if (month < 1 || month > 12)
	return false;
int days;
switch (month) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		days = 31;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		days = 30;
		break;
	case 2:
		days = run(year) ? 29 : 28;
		break;
	default:
		return false;
}
return (day >= 1 && day <= days);

}

// 将日期转换为8位数字 int toDateNum(int year, int month, int day) {

return year * 10000 + month * 100 + day;

}

int main() {

int start, end;
cin >> start >> end;

int count = 0;

// 枚举前4位(年份),生成回文日期并验证
for (int year = 1000; year <= 9999; ++year) {
	// 生成后4位:前4位逆序(year的逆序为月和日)
	string yearStr = to_string(year);
	reverse(yearStr.begin(), yearStr.end());
	int md = stoi(yearStr); // 后4位:month*100 + day
	int month = md / 100;
	int day = md % 100;

	// 验证日期合法性
	if (!is(year, month, day)) {
		continue;
	}

	// 转换为8位数字并判断是否在范围内
	int dateNum = toDateNum(year, month, day);
	if (dateNum >= start && dateNum <= end) {
		count++;
	}
}

cout << count << endl;

return 0;

}


评论:

请先登录,才能进行评论