Ctrl K

Двоичная строка из степеней пятёрки

Средняя
Дана строка bits из символов 0 и 1. Разрежьте её на подряд идущие куски так, чтобы каждый кусок был двоичной записью какой-то степени пятёрки (1, 5, 25, 125, …) и не начинался с нуля. Верните наименьшее возможное число кусков. Если так разрезать строку нельзя, верните -1.
Пример 1
bits="1100101" → -1

Нули на позициях 2 и 3 должны попасть в кусок, начатый раньше. Из таких степенью пятёрки бывает только "11001" (это 25), но тогда остаётся "01" с ведущим нулём. Значит, ответ −1.

Пример 2
bits="1111101" → 1

"1111101" — это 125 = 5³, поэтому хватает одного куска.

Пример 3
bits="10111" → 3
Ограничения
  • 1 ≤ len(bits) ≤ 15
  • Каждый символ bits — 0 или 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяСлова с кнопочного телефона СредняяВсе правильные скобочные строки СредняяНарезка слова на палиндромы СредняяРазбиение на слова из словаря Средняя
загружаем Python…
Вход
bits="1100101"
Ожидается
-1

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