1005 继续(3n+1)猜想 (25分) -java

import java.util.*;

public class Main {


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int len = Integer.parseInt(in.nextLine());
        String[] strings = in.nextLine().split(" ");
        Set<Integer> set = new HashSet<>();
        Set<Integer> setCover = new HashSet<>();

        for (String s : strings) {
            set.add(Integer.parseInt(s));
        }

        for (Integer n : set) {
            if (!setCover.contains(n)) {
                while (n != 1) {
                    if (n % 2 == 0) {
                        n = n / 2;
                    } else {
                        n = (3 * n + 1) / 2;
                    }
                    setCover.add(n);
                }
            }
        }
        set.removeAll(setCover);
        Integer[] res = set.toArray(new Integer[0]);
        Arrays.sort(res, Collections.reverseOrder());
        int j = 0;
        for (Integer i : res) {
            System.out.print(i);
            if (j++ < res.length - 1) {
                System.out.print(" ");
            }
        }
    }
}

 

posted @ 2020-03-14 16:57  FDSUN  阅读(166)  评论(0)    收藏  举报