1 import java.util.Scanner; 2 public class demo3 { 3 /** 4 * 猴子选大王 5 * @param args 6 */ 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 Scanner sc = new Scanner(System.in); 10 System.out.println("请输入猴子数量:"); 11 int M =sc.nextInt(); 12 System.out.println("请输入淘汰数字编号"); 13 int N =sc.nextInt(); 14 int [] arr = new int[M]; //声明一个数组保存猴子 15 for (int i = 0; i < arr.length; i++) { 16 arr[i]=i+1; //遍历数组并且赋值 17 } 18 int count =1;//循环计数 19 int result =0;//接收猴子大王的编号 20 int index =0;//数组的下标 21 while(M>0){//当猴子数量大于1个的时候 22 //循环到数组的末尾时,把数组的下标制成数组的开始 23 if(index==arr.length){ 24 index=0; 25 } 26 //如果计数到淘汰的数值 并且猴子的状态不为0 27 if(count ==N && arr[index]>0){ 28 arr[index] =0; //把当前位置的数组 设置为淘汰状态 29 M--; //猴子数量-1 30 count =1; //重新开始计次 31 } 32 if(arr[index]>0){ //当猴子状态为在选状态 33 count++; //计次+1 34 } 35 36 index++; 37 } 38 result = index; //接收最后猴子的编号 39 System.out.println("大王的编号为:"+result); 40 41 } 42 43 }
运行效果图: