Используйте Метод наибольшего остатка :
Шаг 1: Умножьте числа на n
(в этом случае давайте используем n
, который несразу же получается так приятно продемонстрировать, что LRM все еще работает; я выбираю 737), и разделить целые и дробные части.
0.3 * 737 = 221 + 0.1
0.3 * 737 = 221 + 0.1
0.2 * 737 = 147 + 0.4
0.1 * 737 = 73 + 0.7
0.1 * 737 = 73 + 0.7
Шаг 2: Подвести итог всегочисло частей
221 + 221 + 147 + 73 + 73 = 735
Шаг 3: Сортировка остатков по возрастанию по убыванию
High to low: 0.7, 0.7, 0.4, 0.1, 0.1
Шаг 4: Добавить 1
ккомпоненты целого числа со связанными самыми большими остатками, пока сумма не равна n
.
В нашем случае мы находимся на 2 от целевой суммы (737
), и 0.7
является наибольшим остатком,что происходит дважды.0.7
связано с 0.1
, поэтому добавьте 1 ко всему номеру 0.1
.
Ваш окончательный список:
221
221
147
74
74