Исполнитель Редактор
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов
Ответы (1 шт):
если я правильно понял алгоритм, то код выглядит так:
i = 300
while True:
i += 1
text = '5' * i
while '555' in text or '888' in text:
index = text.find('555')
text = text if index == -1 else (text[:index] + '8' + text[index + 3:])
index = text.find('888')
text = text if index == -1 else (text[:index] + '55' + text[index + 3:])
count5 = text.count('5')
count8 = text.count('8')
if count5 > count8:
print(i)
break
и ответ 303
чисто теоретически опять таки можно решить следующим образом:
очевидно, что с заменой только слева направо подстрок мы можем получить только следующие варианты:
855
8
885
85
88
8855
55
(не возможны варианты типа 858..., потому что меняем цифры строго слева направо и не возможен вариант '5' - его неоткуда сформировать (ведь '888' всегда меняется строго на '55')
из которых по условию нас устраивает только 855 и 55 (кол-во восьмерок и пятерок от 0 до 2 определяется как раз тем, что мы заменяем тройки этих цифр, т.е. модель по 3)
как несложно понять все приведённые выше строки будут повторяться с периодом 7
теперь, когда у нас есть периодичность начнем с самого нуля - рассмотрим строки от 1 символа и выше:
строка '5' нам не подходит - ее нет среди 7 возможных вариантов
берем следующую строку '55' - ее размер 2, теперь осталось решить задачу
2 + 7 * x > 300
откуда
x = 47
2 + 7 * 47 = 303
задача решена не прибегая к программированию