4. 报数:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(m<n)的人退出圈子,下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。输入整数n和m,并按退出顺序输出退出圈子的人的编号。试编写相应程序。
#include<stdio.h> #define MAXN 10 int main(){ int a[MAXN],count,i,restnum,m,n; count=0; scanf("%d%d",&m,&n); restnum=n; for(i=0;i<n;i++){ a[i]=i+1; } while(restnum>1){ i=0; while(i<n){ if(a[i]!=0){ count++; if(count==m){ printf("%d ",a[i]); a[i]=0; restnum--; count=0; } } i++; } } return 0; }输入样例:3 10
输出结果:3 6 9 2 7 1 8 5 10