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

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

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

Условие

Исполнитель Редактор получает на вход строку цифр и преобразует её.

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

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

Ответ

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

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

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

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

    Решение. Заметим, что после первой замены останется 1 двойка и 0 единиц, после второй замены останется 1 единица и 0 двоек, после третьей замены останется 2 двойки и 0 единиц, после четвертой замены останется 2 единицы и 0 двоек. Обозначим за «с» строки с заменой. Тогда, чтобы получилось 40 единиц, в строке B должно работать условие: c10 + c21 + c30 + c42 == 40.Для двоек должно работать условие: c11 + c20 + c32 + c40 > 50.По условию задачи в строке А должно совпадать количество единиц и двоек. Единицы мы получаем в второй и четвертой замене, двойки в первой и третьей. Условие для строки А: 2c2 + c4 == 2c1 + c3.Составим программу, которая перебирает все варианты строки, и найдем минимум. Приведём решение на языке Python.mini = 1000for c1 in range(0,30): for c2 in range(0,30): for c3 in range(0,30): for c4 in range(0,30): if (c10 + c21 + c30 + c42 == 40 and c11 + c20 + c32 + c40 > 50 and 2c2 + c4 == 2c1 + c3): if (c11 + c20 + c32 + c40) < mini: mini = c11 + c20 + c32 + c40print(mini)

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

  1. Приведём решение Елизаветы Князевой на языке…

  2. s = s.replace('022', '10'…

  3. s = s.replace('01', '220'…

  4. s = s.replace('02', '110'…

  5. if s.count('1')==40 and s.count('2')>50…

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

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

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

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