對於一個由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);
}
}
}