N个人围成一圈顺序编号,从1号开始按1、2、3顺序报数,报3者退出圈外,其余的人再从1、2、3开始报数,报3的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。
#include <stdio.h>
using namespace std;
int count(bool stu[],int n)
{
int count = 0 ;
for(int i = 1 ;i<=n; i++)
{
if(stu[i])
count++;
}
return count;
}
int main()
{
int n;
int i ,j;
bool stu[1000];
scanf("%d",&n);
for(i = 1 ; i<=n ; i++)
stu[i]=true;
i=1;
j=0;
while(count(stu,n)!=1)
{
if(stu[i])
{
j++;
}
if(j==3)
{
stu[i]=false;
printf("%d ",i);
j=0;
}
i++;
if(i>n)
i=1;
}
return 0;
}