【入门】约瑟夫环2
题目描述
个人围成一圈(编号 ),从第一个人开始报数,数到 的人出圈;再由下一个人从 开始报数,数到 的人出圈,如此类推;
请输出第 个出圈的人的编号
输入格式
第一行包含一个整数 ,表述数据组数
接下来 行,每行 个数,(),分别用空格隔开。
输出格式
对于每组数据输出一行包含 个数,表示第 个出圈的人的编号
1
10 3 5
6
数据范围与提示
【样例 1 解释】
-
出圈的编号依次为:$2 \rightarrow 5 \rightarrow 8 \rightarrow 1 \rightarrow 6 \rightarrow 0 \rightarrow 7 \rightarrow 4 \rightarrow 9 \rightarrow 3$
-
所以第 个出圈的是
-
请同学们完善下面的递归程序
// n 个人(0, 1, ..., n - 1), 从 0 开始报数, 每 m 个出圈 1 个, 求第 k 个出圈的人
int solve(int n, int m, int k) {
// 终止逻辑
if (k == 1) {
// 添加你的逻辑
}
// 分解为规模更小的问题
return 添加你的逻辑;
}