100
#LS1012. 【入门】约瑟夫环2

【入门】约瑟夫环2

题目描述

nn 个人围成一圈(编号 0,1,n10, 1, \cdots n-1),从第一个人开始报数,数到 mm 的人出圈;再由下一个人从 11 开始报数,数到 mm 的人出圈,如此类推;

请输出第 kk 个出圈的人的编号

输入格式

第一行包含一个整数 TT,表述数据组数

接下来 TT 行,每行 33 个数,n,m,kn, m, k(1mn100,1kn1 \le m \le n \le 100, 1 \le k \le n),分别用空格隔开。

输出格式

对于每组数据输出一行包含 11 个数,表示第 kk 个出圈的人的编号

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$

  • 所以第 55 个出圈的是 66

  • 请同学们完善下面的递归程序

// n 个人(0, 1, ..., n - 1), 从 0 开始报数, 每 m 个出圈 1 个, 求第 k 个出圈的人
int solve(int n, int m, int k) {
	// 终止逻辑
	if (k == 1) {
        // 添加你的逻辑
    }
	
	// 分解为规模更小的问题
	return 添加你的逻辑;
}

数据规模与限制

  • 1T101 \le T \le 10
  • 1mn1051 \le m \le n \le 10^5
  • 1kn1 \le k \le n

来源