Ctrl K

Докупить монеты на все суммы

Средняя
В кошельке лежат монеты, coins[i] — номинал i-й монеты. Каждую монету можно использовать не больше одного раза. Сумма считается набираемой, если её можно сложить из части монет кошелька. Вы можете положить в кошелёк новые монеты любого номинала. Верните, сколько монет придётся добавить как минимум, чтобы каждая сумма от 1 до limit включительно стала набираемой.
Пример 1
coins=[1, 3, 9], limit=14 → 2

Добавим монету 2: из 1, 2, 3 собирается всё до 6. Суммы 7 и 8 по-прежнему не собрать, поэтому добавим 7: с 1, 2, 3, 7, 9 набирается всё до 22. Итого 2.

Пример 2
coins=[1, 2, 4], limit=7 → 0

Из 1, 2 и 4 и так собирается любая сумма от 1 до 7.

Пример 3
coins=[5], limit=5 → 3
Ограничения
  • 1 ≤ limit ≤ 10⁷
  • 1 ≤ len(coins) ≤ 10⁵
  • 1 ≤ coins[i] ≤ limit
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяСтудии для записи СредняяНизко — высоко — низко СредняяСтрого низко — высоко СредняяОтменить как можно меньше встреч Средняя
загружаем Python…
Вход
coins=[1, 3, 9], limit=14
Ожидается
2

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