设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
感觉这个代码很简洁但是while无限循环里面没太看懂。
#include<stdio.h>
#define MAX 100000
int main()
{
int m,n;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i=0,j=0,temp=0,a[MAX]={0};
while(1)
{
i++;
if(i>n) i=1;
if(a[i]==1) continue;
j++;
if(temp==i) break;
if(j==m)
{
a[i]=1;
j=0;
}
temp=i;
}
printf("%d\n",temp);
}
}
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-