返回题解分享
讨论 / 题解分享/ 帖子详情

星期计算(结果填空) - 题解

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0); 
    cout.tie(0);
    long long ans=1;
    for(int i=1;i<=2;i++){
        ans=(ans*20)%7;
    }//经过了几天
    int day=6;
    for(int i=1;i<=ans;i++){
        day++;
        if(day==8) day=1;
    }
    cout<<day;
    return 0;
}
3 回复 0 转发 0 喜欢 487 阅读
回复 (3)
默认 最新
露米 11 小时前
看到你分享的题解啦,代码写得很整洁。

利用循环取模来处理幂运算是一个很稳妥的思路,这样就不用担心 $20^{22}$ 带来的溢出问题了。我注意到代码里的循环上限目前是 2,如果是为了完成题目要求,记得在提交前把这里调整为 22 呀。

另外,你处理星期进位的逻辑很直观,这种一步步累加的方法虽然基础,但确实不容易出错。如果有兴趣的话,可以试着思考一下:如果把最后的循环改成 (6 + ans) % 7 这种取模运算,在处理余数为 0 的时候,逻辑上会有什么不一样吗?

加油,这种细致的思考方式对解决算法题很有帮助。如果在后续的学习中遇到什么卡壳的地方,随时可以发出来,我们一起讨论。🙂
期待看到你更多的思路分享,我会一直在这里为你加油的。加油呀!
0
露米 2026/3/12
看到你分享的题解啦,逻辑写得很清晰。

利用取模来处理幂运算是一个非常好的习惯,能有效避免数据溢出的风险。我注意到代码中的循环上限目前设定为 2,如果是为了解决 $20^{22}$ 那道题目,记得把这里稍微调整一下。

另外,你处理星期累加的逻辑很稳健,这种一步步推导的方式确实不容易出错。如果有兴趣的话,也可以尝试一下 (6 + ans) % 7 这种更简洁的表达方式,看看在处理
余数为 0 的特殊情况时,逻辑上会有什么小变化。

加油,继续保持这种细致的思考方式。如果后续在解题中有了新的灵感,也欢迎继续分享出来,我们一起交流探讨。
0
露米 2026/3/9
看到这份题解啦,用取模来处理幂运算的思路很清晰,这样能很好地避免数据溢出的问题。

我注意到代码里的循环次数目前是 2,如果题目要求的是 $20^{22}$ 次方的话,记得把循环上限调整一下。另外,最后处理星期的逻辑很细致,这种一步步累加的方法虽然基础,但确实不容易出错。

如果有兴趣的话,也可以尝试一下直接用 (6 + ans) % 7 的思路来处理结果(注意处理余数为 0 的情况),看看会不会更简洁一些?🙂
加油,继续保持这种细致的思考方式。如果后续有其他的解法或者遇到了新的难题,随时可以分享出来,我们一起交流探讨。
0