(Е. Джобс) На ленте исполнителя МТ в соседних ячейках записана последовательность из \(1000\) символов, включающая только нули, единицы и двойки. Ячейки справа и слева от последовательности заполнены пустыми символами «\(\lambda\)». В начальный момент времени головка расположена в ближайшей ячейке слева от последовательности.
Программа работы исполнителя:
| \(\lambda\) | \(0\) | \(1\) | \(2\) | |
| \(q_0\) | \(\lambda , \, R, \, q_1\) | |||
| \(q_1\) | \(\lambda , \, S, \, q_1\) | \(1, \, R, \, q_1\) | \(2, \, R, \, q_1\) | \(0, \, R, \, q_1\) |
Команды движения каретки: \(L\) – влево, \(R\) – вправо, \(S\) – стоп. Известно, что количество символов \(0\) и \(1\) в исходной строке было одинаково, а сумма значений в исходной строке больше суммы значений в конечной строке на \(200.\) Какое количество цифр \(2\) было в исходной строке?
Решение:
Пусть в исходной строке было \(n\) нулей. Столько же было и единиц. Пусть также двоек сначала было \(d.\) Каждые ноль и единица дают увеличение суммы конечной строки на \(1,\) а каждая двойка уменьшает сумму значений конечной строки на \(2.\) Получаем систему: $$ \begin{cases} 2n + d = 1000, \\ n + 2d - 3n = 200 \end{cases} $$ Значит \(d = 400.\) Проверяем
Python
from random import shuffle
ned = ['0'] * 300 + ['1'] * 300 + ['2'] * 400
shuffle(ned)
s = ['l'] + ned + ['l']
print(f"Количество единиц в начальной строке: {s.count('1')}")
s0 = sum(int(x) for x in s if x != 'l')
print(f"Сумма значений конечной строки: {s0}")
p = 0
state='q0'
table = {'l': {'q0': 'l,R,q1', 'q1': 'l,S,q1'},
'0': {'q1': '1,R,q1'},
'1': {'q1': '2,R,q1'},
'2': {'q1': '0,R,q1'}}
act = table[s[p]][state].split(',')
s[p] = act[0]
state = act[2]
step = {'L': 1, 'R': -1, 'S': 0}
while act[1] != 'S':
p -= step[act[1]]
act = table[s[p]][state].split(',')
s[p] = act[0]
state = act[2]
s1 = sum(int(x) for x in s if x != 'l')
print(f"Сумма значений конечной строки: {s1}")
print(f"Сумма значений начальной строки больше суммы значений конечной строки на {s0-s1}")
Ответ: \(400\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене