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.
1) Program Massiv1;
Uses Crt;
var k:array[1..12] of real;
i,c:integer;
begin
clrscr;
write('Введите элементы массива k:');
c:=0;
for i:=1 to 12 do
begin
readln(k[i]);
if (k[i]<0) then Inc(c);
end;
writeln;
writeln;
for i:=1 to 12 do write(k[i]:4:4);
writeln;
writeln('Количество элементов <0:',c);
readkey;
end.
2) Program Massiv2;
Uses Crt;
var m:array[1..10] of integer;
i,c:integer;
begin
clrscr;
write('Введите элементы массива m:');
c:=0;
for i:=1 to 10 do
begin
readln(m[i]);
if (m[i]=3) then Inc(c);
end;
writeln;
writeln;
for i:=1 to 12 do write(m[i]:4);
writeln;
writeln('Количество элементов =3:',c);
readkey;
end.
В третьем задании видимо имеется ввиду номер элемента этого массива, т.к по условию задачи массив у нас один.
3) Program Massiv3;
Uses Crt;
var m:array[1..8] of integer;
i,c,max:integer;
begin
clrscr;
write('Введите элементы массива m:');
c:=0;
for i:=1 to 8 do readln(m[i]);
writeln;
writeln;
max:=m[1]
for i:=1 to 8 do
begin
if (m[i]>max) then
begin
max:=m[i];
c:=i
end;
write(m[i]:4);
end;
writeln('Индекс максимального элемента =:',c);
readkey;
end.
4) Program Massiv4;
Uses Crt;
var m:array[1..12] of integer;
i,c,max,sum:integer;
begin
clrscr;
write('Введите элементы массива m:');
c:=0; sum:=0;
for i:=1 to 12 do readln(m[i]);
writeln;
writeln;
max:=m[1]
for i:=1 to 12 do
begin
if (m[i]>max) then
begin
max:=m[i];
c:=i
end;
write(m[i]:4);
end;
for i:=1 to c-1 do sum:=sum+m[i];
writeln('Количество элементов расположенных до max :',с-1);
writeln('Сумма элементов расположенных до max :',sum);
readkey;
end.
В пятом задании видимо имеется ввиду значения элементов массива меньшие чем сумма первого и последнего
5) Program Massiv5;
Uses Crt;
var k:array[1..15] of real;
sum:real;
i,c:integer;
begin
clrscr;
write('Введите элементы массива k:');
c:=0;
for i:=1 to 15 do readln(k[i]);
sum:=k[1]+k[15];
writeln;
writeln;
for i:=1 to 15 do
begin
write(k[i]:4:4);
if (k[i]<sum) tnen Inc(c);
end;
writeln;
writeln('Количество элементов :',c);
readkey;
end.