A299.计算日期 AC题解
2025-09-06 19:18:49
发布于:浙江
1阅读
0回复
0点赞
✅ 一、代码功能回顾
题目是:
已知今天是星期一,经过 n 天后是星期几?
代码思路是:
输入一个整数 n。
计算 (1 + n) % 7 得到新的星期数示星期一)。
根据这个数字输出对应的星期名称。
✅ 二、时间复杂度分析
我们逐行分析:
- 输入部分
cin >> n;
这是一个常数时间操作,读取一个整数。
时间复杂度:O(1) - 计算星期的逻辑
if(1+n>7) cnt=1+n%7;
else cnt=1+n;
这段逻辑等价于:cnt = (1 + n) % 7;(注意:如果结果为 0,说明是星期日)
虽然写法略显复杂,但本质是简单的数学运算。
时间复杂度:O(1)
💡 补充建议:可以简化为一行:
int cnt = (1 + n) % 7;
这样更简洁,也更容易理解。
- 输出星期名称
if(cnt1)cout<<"monday";
else if(cnt2)cout<<"tuesday";
...
else if(cnt==7)cout<<"sunday";
使用了多个 if-else 分支,最多判断 7 次。
因为最多只判断 7 次,这是一个固定上限的操作。
时间复杂度:O(1)
✅ 三、总时间复杂度
将上述所有部分加起来:
输入:O(1)
计算:O(1)
输出:O(1)
📌 总时间复杂度 = O(1)
✅ 四、空间复杂度简要分析
所以空间复杂度也是:O(1)
✅ 五、总结
项目 时间复杂度 空间复杂度
整体程序 O(1) O(1)
代码:
#include<iostream>
using namespace std;
int main(){
int n,cnt;
cin>>n;
if(1+n>7)cnt=1+n%7;
else cnt=1+n;
if(cnt==1)cout<<"monday";
else if(cnt==2)cout<<"tuesday";
else if(cnt==3)cout<<"wednesday";
else if(cnt==4)cout<<"thursday";
else if(cnt==5)cout<<"friday";
else if(cnt==6)cout<<"saturday";
else if(cnt==7)cout<<"sunday";
}
这里空空如也
有帮助,赞一个