1 条题解

  • 1
    @ 2026-8-3 22:37:46

    这是我在另一个网站写的,带注释,能AC

    #include <iostream>
    using namespace std;
    
    // 判断闰年(完整规则)
    bool isLeap(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
    
    // 获取某年某月的天数
    int getDays(int year, int month) {
        int m[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (month == 2 && isLeap(year)) return 29;
        return m[month];
    }
    
    // 判断是否是回文日期
    bool isPalin(int date) {
        string s = to_string(date);
        return s[0] == s[7] && s[1] == s[6] && s[2] == s[5] && s[3] == s[4];
    }
    
    int main() {
        int date1, date2;
        cin >> date1 >> date2;
        int ans = 0;
    
        for (int i = date1; i <= date2; ) {
            // 拆分年月日
            int y = i / 10000;
            int m = i % 10000 / 100;
            int d = i % 100;
    
            // 当天数超过当月最大天数 → 进月
            if (d > getDays(y, m)) {
                i = (i / 100 + 1) * 100 + 1;
                continue;
            }
            // 当月份超过12 → 进年
            if (m > 12) {
                i = (y + 1) * 10000 + 101;
                continue;
            }
    
            // 判断回文
            if (isPalin(i)) ans++;
            
            // 日期 +1 天
            i++;
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    6090
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    6
    已通过
    3
    上传者