[蓝桥杯]-报数游戏

来源:互联网 发布:软件开发和软件研发 编辑:程序博客网 时间:2024/06/14 03:43
游戏开始! 从1号小朋友起,顺时针报数,从1报起。
即:1号小朋友报1,2号小朋友报2,3号小朋友报3, ....


游戏规定,报到数字 m(1<m<100) 的小朋友立即退出报数圈。
在他(她)的顺时针方向的下一个小朋友(如果有的话)开始重新从1报数...
游戏这样一直进行下去,直到圈中只剩下一个小朋友。


求最后剩下的小朋友的编号。


输入:两个整数,n 和 m, 用空格分开。含义如上。


输出:一个整数,表示最后剩下的小朋友的编号。


比如:
输入:
15 3
程序应该输出:
5


再比如:
输入:
7 4
程序应该输出:
2


资源约定:
峰值内存消耗(含虚拟机) < 256M

CPU消耗  < 1000ms


去掉注解可以跟好的理解程序


import java.util.ArrayList;import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();Scanner scan = new Scanner(System.in);int n = scan.nextInt();int m = scan.nextInt();int count = 0;for (int i = 0; i < n; ++i) {list.add(i + 1);}for (int i = 0; list.size()>1; ++i) {count++;if (count == m) {int temp = list.get(i%n);//避免下标越界//System.out.println(temp+"  out");i=list.indexOf(temp);//返回被删除元素的下标list.remove(i);count = 0;n--;i--;//循环要加1,因为元素减少了一个,所以减1//使其停在被删除元素的位置}}System.out.println(list.get(0));}}


0 0