n人围成一圈报数

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位

 

 

import java.util.LinkedList;
import java.util.List;

/**
 * @author Golphing.W
 * @date 19/5/14 下午3:08
 */
public class Test {
    public static void get3(int n, int m){
        List<Integer> list = new LinkedList<>();

        for(int i=1;i<=n;++i){
            list.add(i);
        }

        int j=1;
        int index = 0;
        while(list.size()>1){
            if(list.size() - 1 < index ){
                index = 0;
            }
            if(j % m == 0){
                list.remove(list.get(index));
            }else {
                index++;
            }
            if(j == m){
                j = 1;
            }else {
                j += 1;
            }
        }
        System.out.println(list.get(0));
    }
    public static void main(String[] args) {
        get3(50000000, 3);
    }
}
点赞