代码实现:
import java.util.Scanner;
public class removeNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(removeNum(n));
}
public static int removeNum (int n) {
boolean[] isIn = new boolean[n]; // 标记该数是否还存在于圈中
// 初始化为true
for (int i = 0; i < isIn.length; i++) {
isIn[i] = true;
}
int inSum = n; // 圈内含有的总数
int count = 0; // 计数1...3
int index = 0; // 索引1...n
// 循环遍历开始
while (inSum > 1) {
if (isIn[index]) {
count++;
if (count == 3) {
count = 0; // 开始下一个计数1...3
inSum--;
isIn[index] = false; // 删掉该数
}
}
index++;
// 开始下一个计数1...n
if (index == n) {
index = 0;
}
}
for (int i = 0; i < isIn.length; i++) {
if (isIn[i]) {
return (i + 1);
}
}
return 1;
}
}