Известно, что исходная строка 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

В коде ошибка!!!! решение ищем

Комментарии