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; }