版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DongGeDeBoKe/article/details/75449986
/*
* 一个圆桌围坐有50个人,编号按顺时针方向分别为0-49, 按顺时针首位相接报数,从1开始,若数到的数以3结尾或能被3整除,
* 则该人退出游戏,后面的人继续报数, 当首轮报数完成后, 首次报数人接末次报数人继续累加报数,
* 直到剩下最后一个人,输出该人报的数,及该人最开始的编号。
*/
public static void timu12() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入多少个人?");
int n = scanner.nextInt();
int length = n;// 初始化数
int number = 1;// 存储数
int index = 0;// 每局淘汰多少人
int a[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = i;
}
while (length > 1) {
index = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] != a.length) {
if (number % 10 == 3 || number % 3 == 0) {
a[i] = a.length;
System.out.println();
System.out.print("淘汰的编号:" + i + "\t");
index++;
length--;
}
System.out.print("number:" + number + "\t");
number = number + 1;
}
}
System.out.println();
System.out.println("淘汰:" + index + "人");
}
for(int i=0;i<a.length;i++){
if(a[i]!=a.length){
System.out.println("最后一个人:" + (number-1) + "\t"+" 编号:"+a[i]);
break;
}
}
}