假设有n个小孩坐成一个圈,每个小孩分配了一个序号,即1,2,...,n。从第一个小孩开始报数,如果数到第m个小孩,则小孩出圈;再从其下一个小孩起重新开始报数,报到第m个小孩时,该小孩出圈。如此下去,直到最后只剩一个小孩,问最后留下的小孩的序号是多少? |
输入
输入数据包含多组,每组数据包括两个值n和m,保证1<=n,m<=1000000。 |
输出
针对每组输入数据,输出最后留下的小孩的序号。 |
难度
较难 |
输入示例
6 2 |
输出示例
5 |
#include <stdio.h>
int main()
{
int n,m,i,s=0;
while(scanf("%d %d",&n,&m)!=EOF){
for (i=1;i<=n;i++)
s=(s+m)%i;
printf("%d\n",s+1);
}
return 0;
}