Ctrl K

Кабель на равные куски

Средняя
На складе есть мотки кабеля, rolls[i] — длина i-го мотка в метрах. Монтажникам нужно need кусков кабеля одинаковой длины, причём длина куска — целое положительное число метров. Любой моток можно разрезать на несколько частей целой длины или не резать вовсе. Обрезки, которые не пошли в дело, выбрасываются; сращивать куски нельзя. Верните наибольшую длину, при которой можно нарезать хотя бы need кусков. Если даже куски длиной 1 набрать не удаётся, верните 0.
Пример 1
rolls=[12, 7, 4], need=4 → 4

Кусков длиной 4 получится 3 + 1 + 1 = 5, этого хватает. Длиной 5 — только 2 + 1 + 0 = 3, мало.

Пример 2
rolls=[3, 2], need=6 → 0

Даже кусками длиной 1 выходит всего 5 штук, поэтому ответ 0.

Пример 3
rolls=[10], need=3 → 3
Ограничения
  • 1 ≤ len(rolls) ≤ 10⁵
  • 1 ≤ rolls[i] ≤ 10⁵
  • 1 ≤ need ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПоиск в сдвинутом отсортированном массиве СредняяПервая и последняя копия СредняяПоиск в таблице-цепочке СредняяПоиск в сдвинутом массиве с повторами СредняяМинимум в сдвинутом списке Средняя
загружаем Python…
Вход
rolls=[12, 7, 4], need=4
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 103 теста на сервере, включая скрытые.