30pts求调
查看原帖
30pts求调
1528563
lyt_tcsn楼主2025/1/20 16:38

提交记录

Code:

#include <bits/stdc++.h>
using namespace std;
int a[13] {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

struct date {
	int y, m, d;
} st, en;
bool operator == (const date& a, const date& b) {
	return a.y == b.y && a.m == b.m && a.d && b.d;
}
bool isry(int year) {
	if (year % 100 != 0 && year % 4 == 0)
		return 1;
	if (year % 400 == 0) return 1;
	return 0;
}
int getDate(int year, int month) {
	if (month != 2) return a[month];
	return a[month] - isry(year);
}
date operator ++(date& d, int) {
	d.d++;
	if (d.d > getDate(d.y, d.m)) {
		d.d %= getDate(d.y, d.m);
		d.m++;
		if (d.m >= 12) {
			d.y++;
			d.m = 0;
			d.d = 0;
		}
	}
	return d;
}
bool ishw(const date& d) {
	char s[10];
	sprintf(s, "%04d%02d%02d", d.y, d.m, d.d);
	int l = 0, r = 7;
	while (l <= r) {
		if (s[l++] != s[r--]) return false;
	}
	return true;
}
int main() {
	scanf("%4d%2d%2d", &st.y, &st.m, &st.d);
	scanf("%4d%2d%2d", &en.y, &en.m, &en.d);
	int cnt = 0;
	for (date d = st; !(d == en); d++) {
		if (ishw(d)) {
			cnt++;
		}
	}
	printf("%d", cnt);
	return 0;
}
2025/1/20 16:38
加载中...