Ctrl K

Бит в зеркально растущей строке

Средняя
Строка из нулей и единиц растёт по шагам. После первого шага она равна "0". На каждом следующем шаге к текущей строке t справа приписывают символ "1", а затем — копию t, в которой все биты инвертированы (0 ↔ 1) и порядок символов развёрнут задом наперёд. Так получаются "0", "011", "0111001", "011100110110001" и так далее: после шага i длина строки равна 2^i − 1. Даны числа steps и pos. Верните символ ("0" или "1"), стоящий на позиции pos (нумерация с единицы) в строке, полученной после steps шагов. Строка растёт экспоненциально — попробуйте обойтись без её построения.
Пример 1
steps=3, pos=5 → '0'

После трёх шагов строка равна 0111001; пятый символ — 0.

Пример 2
steps=4, pos=8 → '1'

Строка 011100110110001 длиной 15; восьмой символ — это средняя единица, добавленная на последнем шаге.

Пример 3
steps=1, pos=1 → '0'
Ограничения
  • 1 ≤ steps ≤ 20
  • 1 ≤ pos ≤ 2^steps − 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСетка плей-офф по посеву СредняяУмножение длинных чисел в строках СредняяВсе результаты расстановки скобок СредняяЧисла, которые не боятся переворота СредняяРаскрыть скобки повторов Средняя
загружаем Python…
Вход
steps=3, pos=5
Ожидается
'0'

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