17人筛选的算法,请高手指教一下
17人围成圈(每人编号重1到17),从第一个人开始数,每数到3这个人就离开队伍,(数到17人后在由1号开始数,这时1号报的数为18)求到最后好留下的人编号是几。谢谢高手帮帮
程序代码:#include <stdio.h>
#define N 17
int main()
{
int arr[N]={1};
int i;
for(i=1;i<N;i++)
arr[i]=arr[i-1]+1;
int stop=0;
int counter_num=0,counter_0;
while(!stop)
{
counter_0=0;
for(i=0;i<N;i++)
{
if(arr[i]==0)
counter_0++;
else counter_num++;
if(counter_num%3==0)
arr[i]=0;
}
if(counter_0==N-1)
{
for(i=0;i<N;i++)
{
if(arr[i]==0);
else
printf("result is %d",arr[i]);
}
stop=1;
}
}
return 0;
}