题目描述
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
输入
输入多行,每行2个数,分别表示n和m.
输出
计算每一行中最后剩下这个人的编号.
在用传统方法比较麻烦的时候,考虑用数学方法简化。
代码如下:
#include <stdio.h>
#include <stdlib.h>#define N 100int chuquan(int n,int m)
{if(n==1)return 0;elsereturn (chuquan(n-1,m)+m)%n;
}
int main()
{int n,m;int i;while(~scanf("%d%d",&n,&m)){i=chuquan(n,m)+1;printf("%d\n",i);}return 0;
}