题解 | 回文日期

回文日期

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")

全部评论

相关推荐

07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
07-23 15:05
门头沟学院 Java
熊大不大:不好意思KPI数据刚刚刷新,刚刚达标
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务