题解
某年的第几天
1 条题解
-
0
解题思路
先记住每个月的天数(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