这题其实就是简单的进行一个 天数计算 罢了

但是我一直出错一直出错 错点有很多: 1.过于追求高级算法导致一开始一点思路都没有,我干嘛非等想着用超高级的方法来解小题呢? 2.一定要注意闰年对天数的影响! 3.在循环的时候,i=2017→y这里是不需要等号的,同样的m也是一样,并且千万注意不要把循环套进去了!

#include<iostream>
using namespace std;
bool yesrun(int y) {
	if (y % 400 == 0) return 1;
	else if (y % 100 != 0 && y % 4 == 0) return 1;
	return 0;
}
int mon(int y, int m) {
	if (m == 2) {
		if (yesrun(y))
			return 29;
		else return 28;
	} else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
		return 31;
	else return 30;
}
long long cntdays(int y, int m, int d) {
	long long ans = 0;
	for (int i = 2017; i < y; i++) {
		if (yesrun(i))
			ans += 366;
		else ans += 365;
	}
		for (int j = 1; j < m; j++)
			ans += mon(y, j);
	
	ans+=d;
	return ans;
}
int main() {
	int y, m, d;
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin >> y >> m >> d;
	long long t1 = cntdays(y, m, d);
	long long t2 = cntdays(2025, 9, 18);
	cout << t2-t1;
}