Известно, что исходная строка A содержала ровно два нуля – на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 40 единиц и больше 50 двоек. Какое наименьшее количество двоек может быть в строке B?
Ege12. Редактор. Стаград 25.10.2022
Дана программа для Редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (011, 20)
заменить (022, 10)
заменить (01, 220)
заменить (02, 110)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка A содержала ровно два нуля – на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 40 единиц и больше 50 двоек. Какое наименьшее количество двоек может быть в строке B?
Нужно проанализировать, как меняются подстроки в соответствие с алгоритмом. Оказывается, что нужно положить какое-то количество подстрок 1112, 1 и 2.
Запустим циклы по этим количествам и проверим условие.
Программа на языке Phyton
m = []
for k1 in range(0,40):
for k2 in range(0,40):
for k3 in range(0,40):
s = '0'+'1'*k1+'2'*k2+'1112'*k3+'0'
n1 = s.count('1')
n2 = s.count('2')
s1=s
while not('00' in s):
s = s.replace('011','20',1)
s = s.replace('022','10',1)
s = s.replace('01','220',1)
s = s.replace('02','110',1)
if (n1==n2)and(s.count('1')==40)and(s.count('2')>50):
m.append(s.count('2'))
#print(s.count('1'),s.count('2'),k1,k2,k3)
print(min(m))
#Ответ: 52
В коде ошибка!!!! решение ищем
Комментарии