Присоединиться

11 класс·высокий уровень

Какое наименьшее количество четвёрок может быть в строке B?

Условие

Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.А) заменить (v, w).Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.Б) нашлось (v).Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Дана программа для Редактора:НАЧАЛО ПОКА НЕ нашлось (00) ЕСЛИ нашлось (011) ТО заменить (011, 101) ИНАЧЕ заменить (01, 40) заменить (02, 20) заменить (0222, 1401) КОНЕЦ ЕСЛИ КОНЕЦ ПОКАКОНЕЦ Известно, что исходная строка A содержала ровно два нуля — на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 8 единиц и 13 двоек.

Какое наименьшее количество четвёрок может быть в строке B?

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Приведем решение на языке Python. d = set() # сохраним сюда все результаты def move(k1, k2, kk1, kk2, c, last): # k1, k2 - сколько осталось ед. и дв., kk1, kk2 - текущие замены Х if len(d) and c > min(d): return # если c > минимума, решение не подходит if kk1 == 8 and kk2 == 13 and c > 1 and kk1 + kk2 + c == k1+k2 +c: # если условия совпали, а количество цифр в строке такое же d.add(c) # добавляем текущее количество четверок if last == 0: # если предыдущая команда не {0222, 1401}, можно выполнить любую if k1 > 0: move(k1-1, k2, kk1-1, kk2, c+1,

Осталось ещё 8 шагов

  1. # выполняем, если можно if k2 >…

  2. # выполняем, если можно elif last == 1: #…

  3. # перебираем варианты количества единиц и…

  4. print(min(d))…

  5. Приведем решение Бориса Савельева на языке…

  6. s = s.replace('02', '20'…

  7. s = s.replace('0222', '1401'…

  8. if s.count('1')==8 and s.count('2')…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Выполнение алгоритмов для исполнителей»

Какое наименьшее количество четвёрок может быть в строке B? — решение с объяснением | Lom Ai