(И. Карпачёв) На ленте исполнителя МТ в соседних ячейках записана последовательность из \(1000\) символов, состоящей из \(764\) двоек, \(122\) троек и \(114\) символов \(X\), расположенных в указанном порядке. Ячейки справа и слева от последовательности заполнены пустыми символами «\(\lambda\)». В начальный момент времени головка находится в ближайшей ячейке слева от последовательности.
Программа работы исполнителя:
| \(\lambda\) | \(2\) | \(3\) | \(X\) | |
| \(q_0\) | \(\lambda , \, R, \, q_0\) | |||
| \(q_1\) | \(\lambda , \, S, \, q_1\) | \(3 , \, R, \, q_1\) | \(X , \, R, \, q_1\) | \(2, \, R, \, q_1\) |
Команды движения каретки: \(L\) – влево, \(R\) – вправо, \(N\) — нет перемещения, \(S\) – стоп. Какую десятичную цифру необходимо указать вместо символа \(X,\) чтобы сумма цифр последовательности после выполнения программы равнялась \(3496?\)
Решение:
В конечной последовательности будет \(114\) двоек, \(764\) тройки и \(122\) символа \(X.\) Получаем, что $$2 \cdot 114 + 3 \cdot 764 + 122 X = 3496 \, \Rightarrow \, X = \frac{3496 - 2 \cdot 114 - 3 \cdot 764}{122} = 8$$
Программно
Python
mt = {'l': {'q0': 'l,R,q1', 'q1': 'l,S,q1'},
'2': {'q1': '3,R,q1'},
'3': {'q1': 'X,R,q1'},
'X': {'q1': '2,R,q1'}}
step = {'R': 1, 'S': 0}
state = 'q0'
s = list('l' + '2' * 764 + '3' * 122 + 'X' * 114 + 'l')
p = 0
s[p], m, state = mt[s[p]][state].split(',')
while m != 'S':
p += step[m]
s[p], m, state = mt[s[p]][state].split(',')
nums = ''.join(c for c in s if c != 'l')
for n in range(10):
if sum(int(z) for z in nums.replace('X', str(n))) == 3496:
print(n)
break
Ответ: \(8\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене