plduhoux
2/22/2018 - 9:16 PM

weakNumbers

int[] weakNumbers(int n) {
    Map<Integer, Integer> weaknessmap = new HashMap<>();
    int max = 0;
    for (int i = 1; i <= n; i++) {
        int w = weakness(i);
        if (weaknessmap.containsKey(w)) weaknessmap.put(w, weaknessmap.get(w) + 1);
        else weaknessmap.put(w, 1);
        if (max < w) max = w;
    }
    return new int[]{max, weaknessmap.get(max)};
}

int weakness(int x) {
    int nbx = nbdiv(x), res = 0;
    for (int i = 1; i < x; i++) {
        int nb = nbdiv(i);
        if (nb > nbx) res++;
    }
    return res;
}

int nbdiv(int x) {
    int res = 2;
    for (int i = 2; i < x; i++) if (x % i == 0) res++;
    return res;
}