对于一个由0-n的所有数按照升序组成的序列,进行筛选,每次取所有数字从小到大的第奇位数个数字,并将其丢弃,重复这个过程直到只剩下最后一个数,请求出这最后一个人数:
package com.zzw.cacl;
import java.util.Scanner;
public class Suanfa02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int num=sc.nextInt()+1;
boolean[] arr=new boolean[num];
int left=num;
int count=0;
int index=0;
while(left!=0){
count =0;
for(int i=0;i<num;i++){
if(!arr[i]){
count++;
if((count&1)==1){
arr[i]=true;
left--;
index=i;
}
}
}
}
System.out.println(index);
}
}
}