schoolИнформатика
verifiedРешено AI
Решение задачи: Единицы, двойки и тройки
help_outlineУсловие задачи
Реши задачу: Решить кодом

lightbulbКраткий ответ
После сортировки строка будет состоять из 50 единиц, 50 двоек и 50 троек. На позициях 10, 90 и 130 будут цифры 1, 2 и 3 соответственно.
Подробное решение
Для решения данной задачи проанализируем работу алгоритма. Программа выполняет следующие замены:
1. \(21 \to 12\)
2. \(31 \to 13\)
3. \(23 \to 32\)
Эти операции напоминают алгоритм сортировки пузырьком: цифра 1 перемещается влево относительно 2 и 3, а цифра 2 перемещается влево относительно 3. В итоге, независимо от исходного порядка, все цифры в строке будут отсортированы по возрастанию.
Дано: 50 единиц, 50 двоек и 50 троек.
После выполнения алгоритма получится строка:
\[ \underbrace{11\dots1}_{50} \underbrace{22\dots2}_{50} \underbrace{33\dots3}_{50} \]
Нам нужно найти цифры на позициях 10, 90 и 130.
1. Позиции с 1 по 50 занимают единицы. Следовательно, на 10-м месте стоит цифра \(1\).
2. Позиции с 51 по 100 занимают двойки. Следовательно, на 90-м месте стоит цифра \(2\).
3. Позиции с 101 по 150 занимают тройки. Следовательно, на 130-м месте стоит цифра \(3\).
Запишем решение в виде кода на языке Python, который моделирует этот процесс:
s = '1' * 50 + '2' * 50 + '3' * 50 # Порядок не важен, результат будет один
# Но для чистоты эксперимента можно перемешать, результат не изменится
while '21' in s or '31' in s or '23' in s:
if '21' in s:
s = s.replace('21', '12', 1)
elif '31' in s:
s = s.replace('31', '13', 1)
elif '23' in s:
s = s.replace('23', '32', 1)
# В Python индексация начинается с 0, поэтому вычитаем 1 из номера позиции
print(s[10-1], s[90-1], s[130-1])
Ответ: 123