1 条题解
-
0
问题分析
这是一道简单的日期推算问题,核心是计算“当前星期 + 天数”后的星期数,关键要处理模7的循环逻辑(一周7天),且注意题目中用
7表示星期日(而非0)。核心公式推导:
- 总天数 = 当前星期 X + 剩余天数 N;
- 对总天数取模7:
(X + N) % 7; - 特殊处理:若取模结果为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; }代码解释
- 输入处理:读取当前星期
X和剩余天数N; - 核心计算:
(X + N) % 7计算总天数对7取模,得到0~6的结果;- 三元运算符
res == 0 ? 7 : res:将模0的情况(星期日)转换为7,其余直接输出;
- 输出结果:直接打印最终星期数。
测试用例验证
样例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天=星期一)。
总结
- 核心逻辑:利用模7运算处理一周7天的循环,特殊处理星期日(模0→7);
- 关键细节:题目中星期日用7表示,而非0,需注意转换;
- 代码特点:极简且高效,仅需一行核心计算,时间复杂度O(1)。
- 1
信息
- ID
- 622
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 12
- 已通过
- 8
- 上传者