Выполните задание.
На ленте в соседних ячейках записана последовательность из \(999\) символов, которая может включать только пятёрки, семёрки и девятки, расположенные в произвольном порядке. Ячейки справа и слева от последовательности заполнены пустыми символами «\(\lambda\)». В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности.
Программа работы исполнителя:
| \(\lambda\) | \(5\) | \(7\) | \(9\) | \(0\) | \(1\) | |
| \(q_0\) | \(\lambda , \, L, \, q_1\) | |||||
| \(q_1\) | \(\lambda , \, S, \, q_1\) | \(1, \, L, \, q_1\) | \(1, \, L, \, q_1\) | \(0, \, L, \, q_1\) |
Известно, что после выполнения программы получилась строка, в которой все соседние символы различны. Определите минимально возможное значение суммы цифр в исходной строке.
Решение:
Так как в конечной строке цифры чередуются, значит там присутствуют минимум \(\left\lfloor 999 / 2 \right\rfloor = 499\) нулей. Значит в исходной строке должно присутствовать такое же количество девяток. Остальные \(999 - 499 = 500\) непустых символов должны быть пятерками, если мы хотим получить минимум суммы цифр исходной строки. Значит, минимально возможное значение суммы в исходной строке будет $$5 \cdot 500 + 9 \cdot 499 = 6991.$$
Проверяем программно:
Python
com = {('q0', 'l'): 'l,L,q1', ('q1', 'l'): 'l,S,q1', ('q1', '5'): '1,L,q1',
('q1', '7'): '1,L,q1', ('q1', '9'): '0,L,q1', }
step = {'L': -1, 'S': 0}
strip = ['l'] + ['5', '9'] * 499 + ['5', 'l']
state, act, p = 'q0', 'L', len(strip) - 1
while act != 'S':
strip[p], act, state = com[(state, strip[p])].split(',')
p += step[act]
#print(strip)
if all(a != b for a, b in zip(strip, strip[1:])):
print(500 * 5 + 499 * 9)
Ответ: \(6991\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене