输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
这道题使用ArrayList能够很轻松的解决,每隔两个数删除,就是删除顺序表中i=i+2的数,又由于循环所以要%顺序表的长度。 然后利用顺序表的特性,达到目的
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
if (n > 1000) {
n = 999;
}
List<Integer> list=new ArrayList<>();
int i=0;
for( i=0;i<n;i++){
list.add(i);
}
while(list.size()>1){
i=(i+2)%list.size();
list.remove(i);
}
System.out.println(list.get(0));
}
}
}