编程题
另一个约瑟夫环问题 ## 来源 Zhejiang University Local Contest 2006 (ZOJ2731) ## 题目描述 n个人围成一圈玩约瑟夫游戏,约瑟夫的序号为p。第1个人从1开始报数,报数为m的人被淘汰掉,下一个人又从1开始报数,如此直至剩下一个人。如下图所示,n=8,m=4,假设约瑟夫处在位置1,则依次淘汰4、8、5、2后,接下来要淘汰的是约瑟夫。如果约瑟夫不想被淘汰,他有一次选择机会,他选择6号代替他,从而这次淘汰的是6号,注意此后是从6号的下一个位置,即7号开始报数,而不是1号的下一个位置。继续游戏,最后剩下的是约瑟夫。 ![图片描述](https://doc.shiyanlou.com/courses/uid1791927-20220313-1647159179769) 已知n、m和p,问约瑟夫应该选择哪个人代替他被淘汰,才能使得他是最后的胜利者? ## 输入描述 输入文件包含多个(但不超过100个)测试数据。每个测试数据占一行,包含3个整数:n、m和p。n表示圆圈中人的个数,1≤n≤1000。m表示每轮报数,报数为m的人被淘汰掉。1≤m≤1000000。p表示约瑟夫最初在圆圈中的位置序号,位置序号是从1开始标记的,1≤p≤n。输入最后一行为3个0,表示输入结束。 ## 输出描述 对每个测试数据,输出用来替换约瑟夫的那个人的序号。如果不必选择某个人来替换约瑟夫(即位置p本来就是最后剩下的位置),则输出约瑟夫自己的序号。 ## 样例输入 ```txt 8 4 1 1000 1 1 0 0 0 ``` ## 样例输出 ```txt 6 2 ```
查看答案
赣ICP备20007335号-2