Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
Дана программа для Редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (02, 101)
заменить (11, 2)
заменить (012, 30)
заменить (010, 00)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная
Заметим, что строчки:
заменить (02, 101)
заменить (11, 2)
заменить (012, 30)
не меняют сумму чисел в строке, а строчка:
заменить (010, 00)
будет выполнена один раз и уменьшит итоговую сумму
Приведем решение на языке Python.
def Div(n):
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return 0
return n > 1
for n in range(49,100):
s = 48 * 1 + n * 2 - 1
if Div(s):
print(n)
break
Ответ: 51.
Приведем решение Юрия Красильникова на языке Python.
def prostoe(n):
k=2
while k**2<=n:
if n%k==0: return False
k+=1
return True
def algo(s):
while not '00' in s:
s=s.replace('02','101',1)
s=s.replace('11','2',1)
s=s.replace('012','30',1)
s=s.replace('010','00',1)
return sum(map(int,s))
for n in range(49,100):
s='0'+'2'*n+'1'*48+'0'
if prostoe(algo(s)):
print(n)
break

