n个人(编号1~n)围成一圈从编号为1的开始报数,从1报数到m,报到m的人出来,下一个人继续重新从1开始报数,编程求最后一个留下的人的编号
如n=3,m=4
第一次出队:1
第二次出队:3
最后留下:2
#include<stdio.h>
void CountOff( int n, int m, int sign[] );
int main()
{
printf("请输入有几个人,报的数的编号\n");
int n,m;
scanf("%d %d", &n, &m);
int sign[n];
CountOff( n, m, sign);
for(int i=0; i<n; i++)
{
printf("%d ",sign[i]);
}
return 0;
}
void CountOff( int n, int m, int sign[])
{
int cnt = 1;
int i=0;
for(int j=0; j<n; j++)
{
sign[j] = 0;
}
while(1)
{
for(int j=0; j<n; j++)
{
if(sign[j] == 0) i++;
if(i == m)
{
sign[j] = cnt;
cnt ++;
i = 0;
}
}
if(cnt == n+1) break;
}
}