Как минимально поделить число на 2 и 3 столько раз сколько будет нужно?
Представьте что существует гостиница с комнатами на двух и трех человек. На входе дается число - сколько людей заселяется, а на выходе нужно указать какое минимальное количество комнат они смогут занять.
Например, на пять человек - 2 комнаты(2 мест и 3 мест), на 6 человек - 2 комнаты по 3 места, на 7 тоже 3(2 комнаты по 2 места и 1 по 3-х местка) и так далее. Количество людей может быть любым, хоть 20, хоть 30.
Как написать такой алгоритм?
В описании задачи не указано, чтобы распределение по комнатам было оптимальным, только про минимальное количество. Если оптимальное распределение действительно не требуется, все решается проще: сортируем наши размеры комнат по убыванию и в цикле делим людей (с учетом остатка) на размер комнат.
Если комнат бесконечное количество)
Делим кол-во людей на вместительность самой большой комнаты.
Например 8 людей / 3 мест. = 2, остаток 2 чел
Остаток делим на 2 местные и повторяем пока не вселим всех.
На вскидку в псевдокоде
humans = 8
capacity = 3 #вместительность самой большой комнаты
while(humans>0){
ok = Math.trunc(humans/capacity) #вселили количество
humans -= ok * capacity #осталось вселить
capacity -= 1 #уменьшаем вместительность комнат и повторяем
if(ok==0){
humans = 0 #если все вошли в одну комнату без остатка например 2 в 3 мест.
}