题目:100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。
import java.util.*;
public class CircleNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
List<Integer> list = new LinkedList<>();
int person = 100;
for (int i = 1; i <= person; i++) {
list.add(i);
}
int index = 0;
while (list.size() >= m) {
index = (index + m - 1) % list.size();
list.remove(index);
}
System.out.println(list);
}
}
方法二:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
ArrayList<String> list = new ArrayList<String>();
//加载100个人进入集合中
for(int i=1; i<=100; i++) {
list.add(String.valueOf(i));
}
//记录退出的人的位置
int num = 0;
//写个循环,开始报数,从1~100
for(int i=1; i<=list.size();i++ ) {
//当报到第14人的时候,该人退出
if(i == m) {
//记录该人的位置
num = num + (i-1);
//如果记录的位置数大于集合的长度
if(num >= list.size()) {
//位置 - 长度
num = num - list.size();
}
list.remove(num);
//再从1开始报数
i = 1;
}
}
//打印剩下的人
String str = "";
for(String man : list){
str += man + ",";
}
System.out.println(str.substring(0, str.length() - 1));
}