Тема 12. Алгоритмы – анализ сложных алгоритмов

12.01 Исполнитель «Редактор» – известная строка

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ сложных алгоритмов
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#7417

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

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

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

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

Дана программа для исполнителя Панцирь:

НАЧАЛО

ПОКА нашлось(54)  ИЛИ нашлось(27)

ЕСЛИ нашлось(55 )

ТО заменить(55,2)

ИНАЧЕ ЕСЛИ нашлось(22)

ТО заменить(22,7)

КОНЕЦ ЕСЛИ

ЕСЛИ нашлось(44 )

ТО заменить(44,4)

ИНАЧЕ ЕСЛИ нашлось(77)

ТО заменить(77,7)

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Сколько цифр 7 получится в строке, полученной в результате применения приведённой выше программы к строке: 5◟5-.◝.◜.55◞4◟4-.◝.◜.44◞2◟2-.◝.◜.22◞ 7◟7..◝.◜77◞?
   60      30       90      120

Показать ответ и решение

Решение руками

Для удобства будем использвовать следующие обозначения для количества одинаковых цифр, идущих подряд: A   ,
 (B)  где A - цифра, которая находится в строке, а B - количество этих цифр.

Изначально была строка 5(60)4(30)2(90)7(120).

Условно первый блок программы – это исчезновение пятерок с четверками и появление на их месте 30 двоек. Это происходит за счет замены 2 пятерок на одну двойку, т.е. произойдет 30 замен, а также 30 раз 2 четверки заменятся на 1 (29 раз сотрется четверка). Стоит заметить, что последняя четверка не сотрется, вместо нее сотрется первая попавшаяся в строке семерка. В итоге получится следующая строка:

2(30)4(1)2(90)7(119)

Далее все двойки, стоящие до четверки, заменятся на 7.

2   4  2   7     →  7  2   4  2   7     →  7  2   4  2   7     →  7  2   4   2   7    →  7  2    4  2   7    →  7   2   4  2   7
 (30) (1) (90) (119)     (1) (28) (1) (90)(118)     (2) (26) (1) (90) (118)    (1)(26)(1) (90) (118)    (2) (24) (1) &#x0

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

7  4  2   7
 (1) (1) (90)(118)

Похожие действия произойдут с группой двоек после четверки:

7(1)4(1)2(90)7(118) →  7(1)4(1)7(1)2(88)7(117) → 7(1)4 (1)7(2)2(86)7(117) →  7(1)4(1)7(1)2(86)7 (117)

Как видно, после достижения отметки 28 в количестве двоек программа начинает их уменьшать, не затрагивая семерки. Таким образом после выполнения программы останется следующая строка:

7(1)4(1)7(1)7 (117)

Количество оставшихся семерок равно 119.

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

s = ’5’ * 60 + ’4’ * 30 + ’2’ * 90 + ’7’ * 120

while ’54’ in s or ’27’ in s:
    if ’55’ in s:
        s = s.replace(’55’, ’2’, 1)
    elif ’22’ in s:
        s = s.replace(’22’, ’7’, 1)
    if ’44’ in s:
        s = s.replace(’44’, ’4’, 1)
    elif ’77’ in s:
        s = s.replace(’77’, ’7’, 1)

count_of_sevens = s.count(’7’)
print(count_of_sevens)



Ответ: 119

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!