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

