题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解决方案:
main()
{
int people[100],n,length,k=0,i;
scanf("%d",&n);/*此处要求输入人数,定义了一个限为100的数组,因此这里要<=100*/
for (i=1;i<=n;i++)
{
people[i-1]=i;
}
length=n;
while(n>1){
for (i=0;i<length;i++)
{
if (people[i]!=0) k++;
if (k%3==0) {people[i]=0;n--;}
}
}
for (i=0;i<length;i++)
{
if (people[i]!=0)
printf("%d/n",people[i]);
}
}