题解 | 回文日期
回文日期
https://www.nowcoder.com/practice/0372242deac541d0b578cc6563395681
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")