Удвоение и побитовое НЕ

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Строки
Математика

Даны два неотрицательных числа в двоичной записи: start и end (без ведущих нулей; ноль записан как "0"; длина до 100). За одну операцию можно:

  • удвоить число — приписать справа 0 (ноль остаётся нулём);
  • взять побитовое НЕ — инвертировать все цифры записи без ведущих нулей и отбросить появившиеся ведущие нули. Например, 0 → 1, 1 → 0, 11 → 0, 1110 → 1, 1010 → 101, 101 → 10.

Верните наименьшее число операций, переводящих start в end, или -1, если это невозможно. Если start равно end, ответ 0.

Пример: "10001", "111" → 4 (НЕ: 1110, удвоить: 11100, удвоить: 111000, НЕ: 111).


Источник: Coding Competitions Archive, codejam/2021/round_1c/double_or_noting · © Google LLC · Apache-2.0 · условие переведено и дополнено

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки