C++ 遍历年份、注意月份和日期取值范围即可
#include <iostream>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
// YYYYMMDD
// [0-9][1-3][1-9|1-2][0|1][0|1][1-9|1-2][0-2|3][0-9]
// a[0:3]-b[0:3] 不可以用 &(a[0], a[4])
int y1=atoi(a.substr(0,4).c_str()), y2=atoi(b.substr(0,4).c_str());
// cout << y1 << ' ' << y2 << endl;
int cnt=0;
for (int i=y1; i<=y2; i++) {
int r=0;
if (i%400==0 || i%4==0&&i%100!=0) r++;
int m1=i%10, m2=i/10%10, d2=i/1000, d1=(i-d2*1000)/100; // m1 m2 d1 d2
int m=m1*10+m2, d=d1*10+d2;
// cout << i << ' ' << m << ' ' << d << endl;
if (m==2 && d>0 && d<29+r) {
cnt++;
} else if (m>0 && m<13) {
if ((m==1||m==3||m==5||m==7||m==8||m==10||m==12) && d>0 && d<32) {
cnt++;
} else if ((m==4||m==6||m==9||m==11) && d>0 && d<31) {
cnt++;
}
}
}
cout << cnt << endl;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号