Ctrl K

Первая подходящая фасовка

Средняя
На склад привезли партии товара: в batches[i] штук в партии i. Есть список фасовок pack_sizes: фасовка j раскладывает товар по упаковкам ровно по pack_sizes[j] штук. Партию можно расфасовать фасовкой j, только если её размер делится на pack_sizes[j] без остатка — неполных упаковок быть не должно. Для каждой партии выберите подходящую фасовку с наименьшим индексом. Если не подходит ни одна, запишите -1. Верните массив, где i-й элемент — индекс фасовки для партии i. Одну фасовку можно назначить сколь угодно многим партиям.
Пример 1
batches=[12, 9, 7, 6], pack_sizes=[6, 4, 3] → [0, 2, -1, 0]

12 делится на 6 — фасовка 0. 9 не делится ни на 6, ни на 4, но делится на 3 — фасовка 2. 7 не делится ни на что — -1. 6 делится на 6 — фасовка 0.

Пример 2
batches=[5, 10, 15], pack_sizes=[10, 5, 1] → [1, 0, 1]

Для 10 подходят и 10, и 5, и 1 — берём самую раннюю, с индексом 0. Для 5 и 15 первая подходящая — 5 с индексом 1.

Ограничения
  • 1 ≤ len(batches) ≤ 10⁵
  • 1 ≤ len(pack_sizes) ≤ 10⁵
  • 1 ≤ batches[i] ≤ 10⁵
  • 1 ≤ pack_sizes[j] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСудоку без конфликтов СредняяРазложить анаграммы по группам СредняяНулевые кресты СредняяДерево по прямому и симметричному обходам СредняяДерево по симметричному и обратному обходам Средняя
загружаем Python…
Вход
batches=[12, 9, 7, 6], pack_sizes=[6, 4, 3]
Ожидается
[0, 2, -1, 0]

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