思路
- i超过数组长度就减一个数组长度
- 一个boolean数组检查是否被删掉(这么想好像直接用String的subString功能更好?直接删掉这个字符,然后每次索引值加3,超过长度就减一个length()就行了)
- 然后循环,用count记录剩多少个数字
代码
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
/**
* 循环链表实现,n长度作为除数不断除,余数有大作用
* 110110110
*/
int n=0,count=0;
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextInt()) {
n = scanner.nextInt();
count = n;
int a[] = new int[n];
//初始化
for (int i = 0; i < n; i++) {
a[i] = 1;
}
for (int i = 2;;) {//从2开始删
if(n==0){
System.out.println(0);
break;
}
else if(n==1){
System.out.println(1);
break;
}
if (i >= n) {
i = i - n;
}
while (a[i] == 0) {
i++;
if (i == n) {
i = 0;
}
}
a[i] = 0;
count--;
if (count == 0) {
System.out.println(i);
break;
}
i++;
if(i>=n)i=i-n;
while(a[i]==0){i++;if(i>=n)i=i-n;}
i++;
if(i>=n)i=i-n;
while(a[i]==0){i++;if(i>=n)i=i-n;}
i++;
if(i>=n)i=i-n;
while(a[i]==0){i++;if(i>=n)i=i-n;}
}
}
}
}