50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
代码如下:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
public class Game {
public static void removeTar(int n,int m) {
int num=0,removed=-1;
LinkedList<Integer> list=new LinkedList<>();
ArrayList<Integer> index=new ArrayList<>();
for(int i=0;i<n;i++) {
list.add(i+1);
if(list.get(i)%3==0)
num++;
else
index.add(i);
}
while(list.size()>(n-num)) {
removed=removed+m;
list.remove(removed--);
}
System.out.println("剩下的人是:");
for(Iterator iter=list.iterator();iter.hasNext();) {
System.out.print(iter.next()+" ");
}
System.out.println("\n剩下的人在原来的位置是:");
for(Iterator iter=index.iterator();iter.hasNext();) {
System.out.print(iter.next()+" ");
}
}
public static void main(String[] args) {
Game game=new Game();
game.removeTar(50, 3);
}
}
运行结果如下所示: