C1163 - 罗马轮盘
题目描述
你的程序应能够处理约瑟夫问题的以下变体。n > 0 个人最初围成一圈,面向内侧,并从 1 到 n 编号。编号从 1 到 n 按顺时针方向连续进行。你分配的编号是 1。从编号为 i 的人开始,按顺时针方向计数,数 k(k > 0)个人,该人立即出圈。然后我们从出圈者左侧紧邻的人开始,继续顺时针方向再数 k 个人。被选中的人来到出圈者之前所在的位置。计数随后从他左侧的紧邻的人开始,数到第 k 个人出圈,依此类推,直到只剩下一人。
例如,当 n = 5,k = 2,i = 1 时,出圈的顺序是 2、5、3 和 1。最后剩余的人是 4。
输入格式
你的程序必须读取包含 n 和 k 值的输入行(按此顺序)。输入以一行 n 和 k 均为$0$的值结束。
你的程序可以假设最多有 100 人参加此活动。
输出格式
对于每一行输入,输出应从哪一个人的编号开始计数,以确保你是最后的那个剩余的人。例如,在上述情况下,安全的起始位置是 3。
输入输出样例 #1
输入 #1
5 2
1 5
0 0
输出 #1
3
1
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式
1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:rou.in,输出文件名为:rou.out