(Е. Джобс) На ленте исполнителя МТ в соседних ячейках записана последовательность из \(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\) и \(2\) есть в исходной строке. Суммы значений в начальной и конечной строках кратны \(5,\) при этом больше \(0.\) Определите максимальную возможную сумму исходной строки при выполнении этого условия.
Решение:
Пусть в исходной строке было \(n\) нулей, \(e\) единиц и \(d\) двоек. Из условия задачи имеем: \(1 \leqslant n \leqslant 998,\) \(1 \leqslant e \leqslant 998,\) \(1 \leqslant d \leqslant 998.\) Кроме того, \(n + e + d = 1000.\) Сумма значений начальной строки $$S_0 = e + 2d = 1000 - n + d$$ Сумма значений конечной строки $$S_1 = n + 2e = 2000 - n - 2d$$ Эти суммы должны быть кратны \(5\) и быть ненулевыми. Максимум \(S_0\) найдём перебором
Python
ms = -float('inf')
for n in range(998, 1, -1):
for d in range(1, 1000 - n):
s0 = 1000 - n + d
s1 = 2000 - n - 2 * d
if s0 % 5 == 0 and s1 % 5 == 0 and s0 * s1:
ms = max(s0, ms)
print(ms)
Ответ: \(1985\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене