201712-2 遊戲

判斷報的數是否要被淘汰使用number % k == 0 || String.valueOf(number).endsWith(String.valueOf(k)),確定要被淘汰的小朋友加入remove數組中,一輪結束後再一起淘汰,不然會出現下標錯誤。注意經過的一輪的淘汰後可能沒有剩下小朋友了,所以要取出最後一個被淘汰的或者唯一沒有被淘汰的小朋友輸出。

奉上java滿分代碼

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main{
    private static int k;

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String[] firstLine = scanner.nextLine().split(" ");
        int n = Integer.parseInt(firstLine[0]);
        k = Integer.parseInt(firstLine[1]);
        List<Integer> children = new ArrayList<>();
        for(int i = 0; i < n; i++){
            children.add(i + 1);
        }
        scanner.close();

        List<Integer> remove = new ArrayList<>();
        int number = 0;
        while (true){
            remove.clear();
            for(int child : children){
                number++;
                if(isEliminated(number))
                    remove.add(child);
            }
            children.removeAll(remove);
            if(children.size() <= 1)
                break;
        }

        if(children.size() == 0){
            System.out.println(remove.get(remove.size() - 1));
        } else{
            System.out.println(children.get(0));
        }
    }

    private static boolean isEliminated(int number){
        return number % k == 0 || String.valueOf(number).endsWith(String.valueOf(k));
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章