题目 1160: 出圈

题目描述:

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。

代码:

package lanqiao;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List list = new ArrayList();

        int n = sc.nextInt();
        int m = sc.nextInt();
        for(int i = 1;i <= n;i ++)
        {
            list.add(i);
        }
        int i = 0;
        while(list.size() != 1)
        {
            i = (i + m - 1) % list.size();
            //链表中删除元素后会自动向前对齐
            list.remove(i);
        }

        System.out.println(list.get(0));
    }
}

你可能感兴趣的:(算法,java,开发语言)