СтатГрад 2021 аналитическое решение

         Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

А) заменить (v, w).

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

         Б) нашлось (v).

         Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

         Дана программа для редактора:

НАЧАЛО

 ПОКА нашлось (111)

    заменить(111, 22)

    заменить(222, 11)

 КОНЕЦ ПОКА

 КОНЕЦ

         Известно, что исходная строка содержала более 100 единиц и не содержала других цифр. Укажите минимально возможную длину исходной строки, при которой в результате работы этой программы получится строка, содержащая максимально возможное количество единиц.

         Возьмем неограниченное кол-во единиц и выполним над ними несколько шагов алгоритма.


         Получается, что из 9 единиц у нас осталось 4. Значит каждые три итерации цикла мы выбрасывали по 5 единиц. Т.к. известно, что исходная строка содержала более 100 единиц и необходимо минимальное количество единиц в исходной строке начнем проверку со 101 единицы.

101/5=20 ост. 1

         Откатимся на шаг назад возьмем 6 единиц и проделаем алгоритм вручную.


         Получившаяся строка 112. В ней 2 единицы. 

         Пробуем число 102.

102/5=20 ост. 2

         Откатимся на шаг назад возьмем 7 единиц и проделаем алгоритм вручную.

 

         Получившаяся строка 1121. В ней 3 единицы. 

         Пробуем число 103.

103/5=20 ост. 3

         Откатимся на шаг назад возьмем 8 единиц и проделаем алгоритм вручную.



         Получившаяся строка 11211. В ней 4 единицы. 

         Пробуем число 104

104/5=20 ост. 4

         Откатимся на шаг назад возьмем 9 единиц и проделаем алгоритм вручную.


         Получившаяся строка 221. В ней 1 единица. Пробуем число 105

105/5=21 ост. 0

         Откатимся на шаг назад возьмем 5 единиц и проделаем алгоритм вручную.

         Получившаяся строка 2211. В ней 2 единицы. Пробуем число 106

106/5=21 ост. 1

         В такой ситуации мы уже оказывались, когда брали число 101. Далее наборы единиц и двоек будут повторять те пять, что уже были освещены выше.

112; 1121; 11211; 221; 2211.

         Наибольшее количество единиц имеет третий набор, получающийся в том случае, если изначально в строке было 103 единицы.

Ответ: 103

Источник: СтатГрад 2021


Последнее изменение: Понедельник, 10 июля 2023, 17:32