
Задача 7: Игра На уроке информатики учитель предложил Васе сыграть в следующую игру. На доске
записаны по порядку все целые числа от 1 до N. За один ход можно стереть либо все числа, стоящие на чётных позициях, либо все числа, стоящие на нечётных позициях. После этого оставшиеся числа перенумеровываются заново слева направо; нумерация начинается с единицы. Игра продолжается, пока на доске есть хотя бы два числа. Вася выиграет, если после окончания игры единственным оставшимся на доске числом будет число X. Выведите последовательность ходов, которая приведёт к победе Васи. Гарантируется, что Вася всегда может победить. Входные данные В первой строке содержится целое число N (2 ≤ N ≤ 109) — начальное количество чисел на доске. Во второй строке содержится целое число X (1 ≤ X ≤ N) — число, которое должно остаться в конце игры. Выходные данные Выведите последовательность целых чисел, состоящую из чисел 1 и 2 — ходов Васи. Число 1 означает, что Вася стирает все числа на нечётных позициях, число 2 — на чётных. Каждый ход Васи выводите на отдельной строке. Система оценки В этой задаче 20 тестов, не считая тестов из условия. За каждый пройденный тест будет начисляться 5 баллов. На тесты наложены следующие ограничения: Номера тестов Дополнительные ограничения 1 – 2 Тесты из условия 3 – 10 N ≤ 1000 11 X = 1 12 – 14 X = N 15 – 22 без дополнительных ограничений Примеры Ввод Вывод Пояснение 10 5 2 2 1 На доске записаны числа: 1 2 3 4 5 6 7 8 9 10 Первым ходом Вася стирает все числа на чётных позициях, на доске остаются числа: 1 3 5 7 9 Затем позиции оставшихся чисел перенумеровываются — то есть оставшиеся после первого хода Васи числа получат номера от 1 до 5. Вторым ходом Вася снова удаляет все числа на чётных позициях, на доске остаются числа: 1 5 9 Третьим ходом Вася удаляет все числа на нечётных позициях, и на доске останется только число 5, которое и было нужно. 6 6 1 2 1 Во втором примере выписаны числа 1 2 3 4 5 6 Вася стирает числа на нечётных позициях, остаются 2 4 6 Вася стирает число 4, которое стоит на чётной позиции. Остаются 2 6 Вася стирает число 2, которое стоит на нечётной позиции. Осталось число 6. Сдать решение

Ответы на вопрос

Ответ:
n, result = int(input()), int(input())
spis = list(range(1, n + 1))
while spis != [result]:
index = spis.index(result) + 1
if index % 2 != 0:
spis = list(filter(lambda x: spis.index(x) % 2 == 0, spis))
print(2)
else:
spis = list(filter(lambda x: spis.index(x) % 2 != 0, spis))
print(1)
Объяснение:
Ответ на 40 баллов, на 100 решить не удалось



Для решения этой задачи можно использовать следующую стратегию:
Если X равно 1 или N, то Вася может выиграть, выполнив только один ход. В этом случае ответом будет число 2, если X = 1, или число 1, если X = N.
Если X не равно 1 или N, то Васе необходимо сделать ходы таким образом, чтобы каждым ходом оставалось только одно из чисел X, 1 или N. При этом нам нужно добиться того, чтобы Вася оставался с числом X в конце.
Рассмотрим случай, когда X является нечётным числом. В этом случае Васе нужно начать с хода номер 2. В каждом следующем ходе он должен переключаться между ходами 1 и 2, пока на доске не останется только число X.
Рассмотрим случай, когда X является чётным числом. В этом случае Васе нужно начать с хода номер 1. В каждом следующем ходе он должен переключаться между ходами 1 и 2, пока на доске не останется только число X.
Вот пример кода на языке Python, который реализует описанную стратегию:
pythondef find_moves(N, X):
moves = []
# Проверка случаев, когда Вася может выиграть с одним ходом
if X == 1 or X == N:
moves.append(2 if X == 1 else 1)
return moves
# Проверка случая, когда X нечётное
if X % 2 != 0:
moves.append(2)
# Выполнение ходов до тех пор, пока на доске не останется только число X
while N > 1:
moves.append(1 if X % 2 == 0 else 2)
N //= 2
return moves
# Чтение входных данных
N = int(input())
X = int(input())
# Поиск последовательности ходов
moves = find_moves(N, X)
# Вывод последовательности ходов
for move in moves:
print(move)
Пример использования:
makefileВвод:
10
5
Вывод:
2
2
1
Ввод:
6
6
Вывод:
1
2
1
Этот код решает задачу и работает для всех ограничений, указанных в условии.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili