JAVA:有500个小朋友拉成一个圈,从其中一个小朋友开始

JAVA:有500个小朋友拉成一个圈,从其中一个小朋友开始一次编号1-500,从1号小朋友开始循环1-3报数,数到3的小朋友就退出。编写一个java应用程序,计算出最后一个小朋友的号码是多少? 求大神详细步骤及解释

以前为了准备比赛,写过这样的题目。用一个boolean数组去管理所有小朋友,false表示退出的小伙伴,true表示留下来的。代码不知道丢那了。挺简单的,加油!

猴子选大王——CSharp数组猴子选大王——CSharp数组

最基本的实现,没有考虑优化

 package cn.baokx.test.tmp;

public class Test {
    public static void main(String[] args) {
        //模拟小朋友,true代表退出
        boolean [] array = new boolean[500];
        //报数脚标
        int foot = 1;
        //退出人数计数器
        int out_num = 0;
        while(true){
            for (int i = 0; i < array.length; i++) {
                if(out_num==499){
                    System.out.println("最后一位小朋友的编号是:"+(i+1));
                    return;
                }
                if(!array[i]){
                    if(foot==3){
                        array[i] = true;
                        foot=1;
                        out_num++;
                    }else{
                        foot++;
                    }
                }
            }
        }
    }
}