题目描述:
报数:有n个人围成一圈,按照顺序从1到n编好号。从第一个人开始报数,报到x(x>1)的人退出圈子,下一个人从1开始重新报数,报到x的人退出圈子。如此下去,直到留下最后一个人。问留下来的人的编号。试编写相应程序。
代码:
#include <stdio.h>
main()
{
int i,j,m,k,n,a[60];
scanf("%d",&n);
for(i=0;i<n;i++)
a[i]=i+1;
m=0;
k=1;
while(m<n-1)
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
if(k==3)
{
a[i]=0;
k=0;
m++;//出去的人数+1
}
k++;//报数+1
}
}
for(i=0;i<n;i++)
if(a[i]!=0)
printf("%d",a[i]%3);//a[i]%3为报的数的号码
}```