Ctrl K

Двоичное число не больше порога

Средняя
Дана строка bits из символов 0 и 1 и неотрицательное число cap. Вычеркните из строки некоторые символы (порядок оставшихся не меняется) так, чтобы оставшаяся строка, прочитанная как двоичное число, была не больше cap. Ведущие нули допускаются, а пустая строка считается числом 0. Верните наибольшую возможную длину оставшейся строки.
Пример 1
bits="0110101", cap=6 → 5

Например, "00101" — это 5, не больше 6. Шести символов уже не набрать: в такой строке придётся оставить хотя бы три единицы, и число выйдет больше 6.

Пример 2
bits="111", cap=2 → 1

Возможные подпоследовательности — "1", "11", "111", то есть 1, 3 и 7. Подходит только "1".

Пример 3
bits="1000", cap=1 → 3

Берём три нуля — это число 0. Единица впереди сразу дала бы минимум 4.

Ограничения
  • 1 ≤ len(bits) ≤ 1000
  • bits состоит только из 0 и 1
  • 0 ≤ cap ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазбиение на слова из словаря СредняяВсе результаты расстановки скобок СредняяСпуск до единицы СредняяСкобки со звёздочками СредняяНитка бус без повторов Средняя
загружаем Python…
Вход
bits="0110101", cap=6
Ожидается
5

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