4、n个人(编号 1~n)围成一- 圈从编号为1的开始报数,从1报数到m;报到m的人出来,
下一个人继续重新从1开始报数,编程求最后一个留 下的人的编 号
如n=3,m=4
第一次出队: :
第二次出队: 3
最后留下: 2
import java.util.Scanner;
public class Yuan04 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(),m=sc.nextInt();
int flag=0; //计数
int num=n; //剩余人数
int[] su=new int[n]; //定义数组并且全赋值为1
for(int i=0;i<n;i++) {
su[i]=1;
}
for(int i=1;;i++) {
if(i==n+1) { //构成循环
i=1;
}
if(su[i-1]!=0) {
flag++;
}else {
continue;
}
if(flag%m==0) { //出圈人数减一
num--;
su[i-1]=0;
}
// for(int q=0;q<su.length;q++) {//验证
//
// System.out.print(su[q]);
//
// }
// System.out.println();
if(num==1) {
break;
}
}
for(int i=0;i<su.length;i++) {
if(su[i]!=0) { //输出结果
System.out.println(i+1);
}
}
}
}