top1编程
← 返回题目
题解

某年的第几天

1 条题解

  • 0
    @ 2026-8-4 9:54:08

    解题思路

    先记住每个月的天数(2 月平年是 28 天),如果是闰年就把 2 月改成 29 天。然后把前 m-1 个月的天数加起来,最后加上当月的日期 d,就是这一年的第几天。

    闰年判断规则:(年份能被4整除且不能被100整除) 或 能被400整除。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int y, m, d;
        cin >> y >> m >> d;
        // 每月的天数(平年2月28天)
        int md[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        // 闰年2月29天:四年一闰、百年不闰、四百年再闰
        if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) md[2] = 29;
        int s = 0;
        for (int i = 1; i < m; i++) s += md[i];   // 前m-1个月的天数和
        cout << s + d << endl;                    // 再加上这个月的日期
        return 0;
    }
    

    复杂度分析

    最多累加 12 个月,时间复杂度 O(1),额外空间复杂度 O(1)。

    • 1