import java.util.Arrays;
import java.util.Scanner;
//有n个人围成一圈,顺序排号,从第个人呢开始报数(从1到3报数),
//凡报道3的人退出圈子,问留下的是原来第几号的那位
public class d15t{
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.print("请输入总人数:");
int p = sca.nextInt();
/* 初始化人员 */
boolean[] per = new boolean[p];// boolean数组表示站成一圈的人,false表示退出
for (int i = 0; i < per.length; i++) {
per[i] = true;
}
/* 报号 */
int t = 0, len = per.length;//初始化长度len和序号t
while (len > 1) {//当长度大于一进语句,只剩一个人时才退出
for (int i = 0; i < per.length; i++) {
if (per[i]) {
t++;//序号每次加1
if (t == 3) {//当序号为3时,执行以下语句
t = 0;//将t设置为0,重新从1-3报号
per[i] = false;//把t等于三时的布尔数组
//位置设置为false,当作为人的退出
len--;//每次数到三时长度减一
}
}
}
}
/* 结果 */
// System.out.println("最后的情况:" + Arrays.toString(per));
for (int i = 0; i < per.length; i++) {
if (per[i]) {//遍历布尔数组,为true的输出
//i为索引位置,i+1为实际位置:既从一开始数的位置,除三取余为原来的序号
System.out.println("原来为:" + (i + 1) % 3+"号");
}
}
}
}
import java.util.Scanner;
//有n个人围成一圈,顺序排号,从第个人呢开始报数(从1到3报数),
//凡报道3的人退出圈子,问留下的是原来第几号的那位
public class d15t{
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.print("请输入总人数:");
int p = sca.nextInt();
/* 初始化人员 */
boolean[] per = new boolean[p];// boolean数组表示站成一圈的人,false表示退出
for (int i = 0; i < per.length; i++) {
per[i] = true;
}
/* 报号 */
int t = 0, len = per.length;//初始化长度len和序号t
while (len > 1) {//当长度大于一进语句,只剩一个人时才退出
for (int i = 0; i < per.length; i++) {
if (per[i]) {
t++;//序号每次加1
if (t == 3) {//当序号为3时,执行以下语句
t = 0;//将t设置为0,重新从1-3报号
per[i] = false;//把t等于三时的布尔数组
//位置设置为false,当作为人的退出
len--;//每次数到三时长度减一
}
}
}
}
/* 结果 */
// System.out.println("最后的情况:" + Arrays.toString(per));
for (int i = 0; i < per.length; i++) {
if (per[i]) {//遍历布尔数组,为true的输出
//i为索引位置,i+1为实际位置:既从一开始数的位置,除三取余为原来的序号
System.out.println("原来为:" + (i + 1) % 3+"号");
}
}
}
}