1 条题解

  • 0
    @ 2026-3-22 17:47:44

    问题分析

    这是一道简单的日期推算问题,核心是计算“当前星期 + 天数”后的星期数,关键要处理模7的循环逻辑(一周7天),且注意题目中用 7 表示星期日(而非0)。

    核心公式推导:

    1. 总天数 = 当前星期 X + 剩余天数 N;
    2. 对总天数取模7:(X + N) % 7
    3. 特殊处理:若取模结果为0,说明是星期日(输出7),否则输出取模结果。

    完整C++代码(极简版)

    #include <iostream>
    using namespace std;
    
    int main() {
        int X, N;
        cin >> X >> N;
        
        int res = (X + N) % 7;
        // 模7为0时输出7(星期日),否则输出结果
        cout << (res == 0 ? 7 : res) << endl;
        
        return 0;
    }
    

    代码解释

    1. 输入处理:读取当前星期 X 和剩余天数 N
    2. 核心计算
      • (X + N) % 7 计算总天数对7取模,得到0~6的结果;
      • 三元运算符 res == 0 ? 7 : res:将模0的情况(星期日)转换为7,其余直接输出;
    3. 输出结果:直接打印最终星期数。

    测试用例验证

    样例1

    输入:1 6 计算:(1+6)%7 = 7%7 = 0 → 输出7(与样例一致)。

    样例2

    输入:5 3 计算:(5+3)%7 = 8%7 = 1 → 输出1(与样例一致)。

    边界情况测试

    • 输入 7 1(7+1)%7=1 → 输出1(星期日+1天=星期一);
    • 输入 2 7(2+7)%7=9%7=2 → 输出2(星期二+7天=星期二);
    • 输入 6 2(6+2)%7=8%7=1 → 输出1(星期六+2天=星期一)。

    总结

    1. 核心逻辑:利用模7运算处理一周7天的循环,特殊处理星期日(模0→7);
    2. 关键细节:题目中星期日用7表示,而非0,需注意转换;
    3. 代码特点:极简且高效,仅需一行核心计算,时间复杂度O(1)。
    • 1

    信息

    ID
    622
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    12
    已通过
    8
    上传者