题目:100个人排好号围成一个圈,输入m,从1号报数,第m个出局,从下一个人继续周而复始,直到剩下人数小于m个,从小到大输出剩下人数的起始编号。
public void test11(){
Scanner scanner = new Scanner(System.in);
int index = 0;
int count = 0;
int m = scanner.nextInt();
if ( m <=1 || m >= 100){
System.out.println("ERROR!");
return;
}
ArrayList<Integer> integers = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
integers.add(i);
}
String s = "";
Iterator<Integer> listiterator = integers.iterator();
while (true){
if (index == 100 -m +1){
break;
}
while (listiterator.hasNext()) {
//计数
++count;
listiterator.next();
if (count == m) {
//满足条件出局
listiterator.remove();
index++;
count = 0;
}
}
listiterator = integers.iterator();
}
while (listiterator.hasNext()) {
s += listiterator.next().toString() + ",";
}
System.out.println(s.subSequence(0, s.length() -1));
}