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));
    }
}

 

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