разбиение целого числа на почти равные элементы - PullRequest
0 голосов
/ 28 декабря 2018

Есть ли где-нибудь функция, которая делит целые или десятичные числа на части, которые максимально равны и суммируют до входного значения?

Я ищу что-то, что будет работать так:

devide(4,2) -> {2,2} (2 + 2 = 4, 2 и 2 равны)

devide(6,4) -> {2,2,1,1} (2 + 2 + 1 + 1 = 6, невозможно приблизить эти числа друг к другу)

Я знаю, что могу сделать это сам, но я ищу какую-нибудь библиотечную функцию.

1 Ответ

0 голосов
/ 28 декабря 2018

Я никогда не слышал о библиотеке, которая делает это, но это довольно легко.Просто поместите частное в каждую ячейку массива по размеру делителя, затем поместите остаток в каждую ячейку.

Пример:

public static int[] divide(int n, int d){ //d for divisor
    int[] res = new int[d];
    int qu = n/d; //quotient
    int rm = n%d; //remainder 
    for(int i=0; i<d; i++){
        res[i] = qu;
        if(i  < rm){
            res[i]++;
        }
    }
    return res;
}
...