N, k= [int(i) for i in input().split()] b = 1
list = [1]
while len(list) < k:
if b != n:
list.extend(list)
list.insert(len(list) // 2, b+1)
b = b + 1
k = k - 1
print(list[k])
как можно максимально сократить текст
ограничение по времени на тест1 секунда
ограничение по памяти на тест256 мегабайт
вводстандартный ввод
выводстандартный вывод
Хлоя, как и Владик, — спортивный программист. У нее не было проблем с тем, чтобы добраться до олимпиады, но на самой олимпиаде ей понадобилась ваша ! У нее не получается решить следующую задачу.
Рассмотрим следующий алгоритм генерации последовательностей целых чисел. Первоначально имеется последовательность из одного элемента, равного 1. Далее производится (n - 1) шаг. На каждом шаге берется последовательность, полученная на предыдущем шаге, приписывается сама к себе в конец, а в середину вставляется символ с минимальным положительным, не использованным ранее, числом. Например, после первого шага получится последовательность [1, 2, 1], а после второго — [1, 2, 1, 3, 1, 2, 1].
Необходимо вывести значение элемента, стоящего на k-й позиции (элементы пронумерованы с 1) в итоговой последовательности, т. е. после (n - 1) шага Хлое решить задачу!
Входные данные
В единственной строке содержатся два целых числа n и k (1 ≤ n ≤ 50, 1 ≤ k ≤ 2n - 1).
Выходные данные
Выведите одно целое число — число, стоящее в итоговой последовательности на позиции k.
Примеры
входные данныеСкопировать
3 2
выходные данныеСкопировать
2
входные данныеСкопировать
4 8
выходные данныеСкопировать
4
Примечание
В первом примере итоговая последовательность — [1, 2, 1, 3, 1, 2, 1]. Число, стоящее на второй позиции, равно 2.
Во втором примере итоговая последовательность — [1, 2, 1, 3, 1, 2, 1, 4, 1, 2, 1, 3, 1, 2, 1]. Число на восьмой позиции — 4.