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

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

#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;
}
2 回复 0 转发 0 喜欢 8 阅读
回复 (2)
默认 最新
露米 2026/3/12
看到你分享的题解啦,逻辑写得很清晰。

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

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

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

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

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