题目描述
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
输入
初始人数n
输出
最后一人的初始编号
样例输入
3
样例输出
2
理清逻辑就行了,
看清楚代码就ok了,
最简单的方法:
弄个数组,
一个一个判断,
最难的一步应该是由最后一个人返回到第一个人的一步,将索引变成-1就ok了,
include<stdio.h>
#include<malloc.h>
int M = 3;
int main()
{
int i,m,k=0,a[1000],n;
m=0;
scanf("%d",&n);
for (i=0;i<n;i++)
{
a[i]=1;
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
m++;
}
if(m==3)
{
m=0;
k++;
a[i]=0;
}
if(i==(n-1))
i=-1;
if(k==(n-1))
break;
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
printf("%d\n",i+1);
}
}
return 0;
}