Ctrl K

Сколько монет докупить

Сложная
В кошельке лежат монеты, их номиналы — в отсортированном по неубыванию массиве coins. Каждую монету можно использовать в оплате не больше одного раза. Хочется, чтобы любую сумму от 1 до limit включительно можно было заплатить без сдачи — каким-то набором монет из кошелька. Для этого можно добавить в кошелёк новые монеты любого номинала. Верните наименьшее число монет, которые нужно добавить.
Пример 1
coins=[1, 4], limit=7 → 1

Сейчас можно заплатить 1, 4 и 5. Добавим монету 2: тогда получаются все суммы от 1 до 7.

Пример 2
coins=[2, 3], limit=10 → 2

Без монеты 1 не набрать сумму 1 — добавляем её. Монеты 1, 2, 3 покрывают суммы до 6; ещё одна монета, например 7, дотягивает до 13 ≥ 10.

Пример 3
coins=[1, 1, 3], limit=5 → 0

Монеты уже покрывают суммы от 1 до 5 — добавлять ничего не нужно.

Ограничения
  • 0 ≤ len(coins) ≤ 10⁵
  • 1 ≤ coins[i] ≤ 10⁴
  • coins отсортирован по неубыванию
  • 1 ≤ limit ≤ 2³¹ − 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаклейки за баллы СложнаяНаибольшее число из двух рядов СложнаяСамый тяжёлый день чтения СложнаяНаращиваем капитал проектами СложнаяВыравнивание полок Сложная
загружаем Python…
Вход
coins=[1, 4], limit=7
Ожидается
1

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