第一次发文,发现这道题目论坛好多同学做得好像不是很完善,把我写的代码分享给大家,仅供参考。
1.题目描述
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人。
2.输入与输出
样例输入:3
样例输出:2
样例输入:600
样例输出:203
3.代码如下:
#include <stdio.h>
int main()
{
int i,j,n,cnt=0;
//其中i为人员编号,j为已退出人数,n为总人数,cnt为报数计数变量
scanf("%d",&n);
int member[n+1];
for(i=0;i<n+1;i++)
member[i]=i;
for(j=0;j<n-1;)
{
for(i=1;i<n+1;i++)
{
if(member[i]!=0)
{
cnt++;
if(cnt%3==0)
{
member[i]=0;
j++;
}
}
}
} for(i=0;i<n+1;i++)
{
if(member[i]!=0)
printf("%d ",member[i]);
}
return 0;
}