首页 > 解决方案 > 数的整数除法

问题描述

如何将一个数字分成相等的部分或尽可能接近相等。请参见下面的示例:

如果我想在两组之间分配 61 的值,则为 30.5 和 30.5。双打(小数)不好,所以在这方面最接近的分割是 30 和 31。

同样 42 / 5 = 8.4,但是我需要系统返回 (8, 8, 8, 9, 9),这是最接近整数的分割。

解决了伙计们:

        if(sum % numberOfTeams != 0) {
        al.add(0, sNOT);
    for(int i = 0; i < numberOfTeams - 1;  i++) {
        int remover = sum - sNOT;
        if(remover % (sNOT + 1) == 0) {
            al.add(i+1, sNOT + 1);
        }else {
         al.add(i + 1, sNOT);

        }

     }
}

}

标签: javaalgorithmmathnumbersdouble

解决方案


这是一个完全使用的解决方案,Arrays没有循环短一点。有效性检查也应该按照上面的建议进行

    int value = 42;
    int groups = 5;

    int residue = value % groups;
    int[] res = new int[groups];
    int division = value / groups;
    Arrays.fill(res, 0, residue, division +1);
    Arrays.fill(res, residue, res.length, division);

    System.out.println(Arrays.toString(res));

推荐阅读