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

import java.util.*;
public class eleventh {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入总人数:");
        int n=input.nextInt();
        boolean[] arr=new boolean[n];
        for(int i=0;i<arr.length;i++){
            arr[i]=true;//下标为true说明还在圈内
        }
        int leftCount=n;//圈里剩下的人数
        int countNum=0;
        int index=0;
        while(leftCount>1){
            if(arr[index]==true){//当在圈里时
                countNum++;//报数递加
                if(countNum==3){//报数为3时
                    countNum=0;//从0开始继续报数
                    arr[index]=false;//此人退出圈子
                    leftCount--;//剩余人递减
                }
            }
            index++;//每报一次数,下标加1
            if(index==n){//当下标大于n时,说明已经数了一圈
                index=0;//将下标设为0重新开始
            }
        }
        System.out.print("最后剩下的是原来的第");
        for(int i=0;i<n;i++){
            if(arr[i]==true){
                System.out.println(i+1+"位");
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容