这题其实就是简单的进行一个 天数计算 罢了
但是我一直出错一直出错 错点有很多: 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;
}

京公网安备 11010502036488号