题解
2026-08-05 18:01:49
发布于:广东
10阅读
0回复
0点赞
这道题的核心思路其实很简单,就是利用数组下标来对应星期几,再配合取模运算(%)来处理星期的循环。
结合网页中的题解和代码,我为你整理了详细的解题步骤:
-
核心思路:数组映射 + 模拟
我们可以把一周的七天存入一个字符串数组中,利用下标 0-6 分别代表 周一到周日。
建立映射:
定义一个数组 week,内容为 {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}。
这样,下标 0 就是周一,下标 6 就是周日。
查找当前天数:
输入当前的星期字符串(例如 "MON"),通过一个循环遍历数组,找到它在数组中的下标。
比如输入 "MON",循环比对后发现它在 week[0],所以当前下标 index = 0。
计算未来天数:
题目要求计算
k
k 天之后是星期几。
新的下标 = (当前下标 + k) % 7。
为什么要取模 7? 因为一周有 7 天,超过 7 就会从头开始循环。取模运算可以自动处理这种循环(例如第 8 天其实就是第 1 天)。
输出结果:
根据计算出的新下标,直接输出数组中对应的字符串即可。 -
代码实现 (C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
string S;
long long k; // 注意 k 的范围可能很大,建议用 long long
cin >> S >> k;
// 1. 定义星期数组,下标 0-6 对应 周一到周日
string week[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
int current_index = 0;
// 2. 遍历查找当前输入的是星期几,确定起始下标
for (int i = 0; i < 7; i++) {
if (week[i] == S) {
current_index = i;
break;
}
}
// 3. 计算 k 天后的下标
// 注意:这里直接对 k 取模 7 也是可以的,防止 k 过大溢出(虽然 long long 通常够用)
// 核心公式:(当前下标 + 偏移量) % 7
int result_index = (current_index + k) % 7;
// 4. 输出结果
cout << week[result_index] << endl;
return 0;
}
这里空空如也






有帮助,赞一个