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

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

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

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

Задача 61#11755Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 1◟..◝.◜1 ◞?
  20

НАЧАЛО

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

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

         ТО заменить(1,0)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

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

Аналитическое решение

Алгоритм ищет пары единиц и заменяет 1 на 0. Он будет продолжаться до тех пор, пока в строке не останется одна единица. Оставшиеся 19 единиц будут заменены на нули.

Получится строка из 19 нулей и одной единицы.

Программное решение

s = ’1’ * 20
while ’11’ in s:
    if ’1’ in s:
        s = s.replace(’1’, ’0’, 1)
print(s)

Ответ: 0(19)1

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

Задача 62#11757Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

      КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 2◟..◝.◜2 ◞?
  15

НАЧАЛО

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

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

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

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

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

Аналитическое решение

Пока в строке есть три двойки, алгоритм заменяет две двойки на 1. Получается алгоритм завершится, когда в строке останется две двойки.

Программное решение

s = ’2’ * 15
while ’222’ in s:
    if ’22’ in s:
        s = s.replace(’22’, ’2’, 1)
print(s)

Ответ: 22

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

Задача 63#11758Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

Выполняется, пока условие истинно.

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

Н АЧА ЛО

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

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

         ТО  зам ени ть(33,32)

      КО НЕЦ Е СЛ И

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Какая строка получится в результате применения приведённой выше программы к строке: 3◟-..◝.◜3 ◞?
  10

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

Аналитическое решение

Все пары троек заменятся на 32. В строке 5 пар троек, значит получится 5 пар 32.

Программное решение

s = ’3’ * 10
while ’33’ in s:
    if ’33’ in s:
        s = s.replace(’33’, ’32’, 1)
print(s)

Ответ: 3232323232

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

Задача 64#11759Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 1◟..◝.◜1 ◞5◟-..◝.◜5 ◞?
  10   10

НАЧАЛО

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

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

         ТО заменить(15,51)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

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

Аналитическое решение

На стыке единиц и пятерок 15 заменится на 51. Далее все единицы слева будут заменяться на 5, после чего алгоритм начнем заменять все пятерки справа на единицы. В итоге все единицы заменятся на пятерки, а все пятерки - на единицы, количество каждой цифры останется неизменным.

Программное решение

s = ’1’ * 10 + ’5’ * 10
while ’15’ in s:
    if ’15’ in s:
        s = s.replace(’15’, ’51’, 1)
print(s)

Ответ: 5(10)1(10)

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

Задача 65#11765Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 1◟2..◝◜.12◞(1212...1212)?
   12

НАЧАЛО

   ПОКА нашлось(12)  ИЛИ нашлось(222)

      заменить(12,2)

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

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

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

Аналитическое решение

Проследим, что происходит с ’1212’: 1212 → 212 → 222 → 2  .

Значит, две пары ’12’ дают одну двойку. Всего в строке двенадцать пар ’12’, проделаем это с десятью парами и получим строку ’221212’.

Далее рассмотрим каждую замену, чтобы учесть условие, когда цикл завершается:

221212 → 22212 → 212 → 22  .

Программное решение

s = ’12’ * 12
while ’12’ in s or ’222’ in s:
    s = s.replace(’12’, ’2’, 1)
    s = s.replace(’222’, ’2’, 1)
print(s)

Ответ: 22

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

Задача 66#11766Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 5◟71..◝◜.571◞?
    10

НАЧАЛО

   ПОКА нашлось(57)  ИЛИ нашлось(1111)

      заменить(57,1)

      заменить(1111,1)

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

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

Аналитическое решение

Проследим, что происходит с ’571571’: 571571 → 11571 → 1111 → 1

Тогда восемь пар ’571’ дадут: 1111 → 1  .

Тогда для оставшейся строки: 1571571 → 111571 → 11111 → 11  .

Программное решение

s = ’571’ * 10
while ’57’ in s or ’1111’ in s:
    s = s.replace(’57’, ’1’, 1)
    s = s.replace(’1111’, ’1’, 1)
print(s)

Ответ: 11

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

Задача 67#11767Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

Выполняется, пока условие истинно.

Какая строка получится в результате применения приведённой ниже программы к строке: 1...12 ...2333?
◟-◝1◜0 ◞◟-◝5◜ ◞

Н АЧА ЛО

   П ОК А нашлось(12) И ЛИ наш лось(13) ИЛИ нашлось(33333)

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

      ТО заменить(23,3)

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

      ТО заменить(13,33)

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

      ТО заменить(333,3)

   К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  112(3)  , скобки ставятся при трех и более повторениях.

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 23  , то заменим 23  на 3  .

Получим строку 1 ...1 2...2 333
◟-◝1◜0 ◞ ◟ ◝◜4 ◞

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

Получим строку 1◟-.◝..◜1 ◞ 333
  10

Так как у нас уже нет комбинаций 23  , проверяем следующие условия: находим 13  - заходим в цикл. Под первое условие наша строка не подходит - у нас нет 23  , но зато она подходит под второе, ведь у нас есть 13  . Тогда заменим       13  на 33  .

Получим строку 1◟-.◝..◜1 ◞ 333
  9

Заметим, что количество 1  уменьшается на один, а количество 3  увеличивается на 1  . Тогда повторим данное действие, пока у нас есть комбинации 13  , а именно еще девять раз. Получим строку 3◟-..◝.◜3 ◞
  13  . Теперь мы будем заходить только в третье условие. Заметим, что на каждой итерации кол-во троек уменьшается на 2  . Значит в какой-то момент мы дойдём до строки 3◟. ◝.◜.3 ◞
  5  . После этого в последний раз зайдём в третье условие и получим строку 3◟-.◝..◜3 ◞
  3  , то есть запишем в ответ 3(3)  .

Решение прогой:

s = ’1’ * 10 + ’2’ * 5 + ’333’
while ’12’ in s or ’13’ in s or ’33333’ in s:
    if ’23’ in s:
        s = s.replace(’23’, ’3’, 1)
    elif ’13’ in s:
        s = s.replace(’13’, ’33’, 1)
    elif ’333’ in s:
        s = s.replace(’333’, ’3’, 1)
print(s)

Ответ: 3(3)

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

Задача 68#11768Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке: 1◟..◝.◜1 ◞2◟-..◝.◜2 ◞3?
 100  100

НАЧАЛО

   ПОКА нашлось(12)  ИЛИ нашлось(23)  ИЛИ нашлось(33333)

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

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

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

      ТО заменить(23,33)

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

      ТО заменить(3333,3)

   КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Если вы получили строку вида 111222111  , то в ответе нужно записать 1(3)2(3)1(3)  , а для строки 11222  - 112(3)  , скобки ставятся при трех и более повторениях.

Показать ответ и решение
s = ’1’ * 100 + ’2’ * 100 + ’3’
while ’12’ in s or ’23’ in s or ’33333’ in s:
    if ’12’ in s:
        s = s.replace(’12’, ’2’, 1)
    elif ’23’ in s:
        s = s.replace(’23’, ’33’, 1)
    elif ’333’ in s:
        s = s.replace(’3333’, ’3’, 1)
print(s)

Ответ: 33

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

Задача 69#11775Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Найдите произведение количества тех цифр, которых больше всего, и значения тех цифр, которых меньше всего в строке, получившейся в результате применения приведённой ниже программы к строке: 7...79...9?
◟3◝◜67◞◟-◝3◜4 ◞

НАЧАЛО

   ПОКА нашлось(77)  ИЛИ нашлось(9)

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

         заменить(79,77)

      КОНЕЦ ПОКА

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

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

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

         ТО заменить(9,8)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’7’ * 367 + ’9’ * 34
while ’77’ in s or ’8’ in s:
    while ’79’ in s:
        s = s.replace(’79’, ’77’, 1)
    if ’77’ in s:
        s = s.replace(’77’, ’9’, 1)
    elif ’9’ in s:
        s = s.replace(’9’, ’8’, 1)
print(s)
print(s.count(’9’) * 7)

Ответ: 1400

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

Задача 70#11778Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Напишите сумму цифр строки, полученной в результате применения приведённой ниже программы к строке: 5...5 7...7 2...2?
◟ ◝1◜0 ◞ ◟ ◝3◜0-◞◟ ◝5◜0-◞

НАЧАЛО

   ПОКА нашлось(5)  ИЛИ нашлось(77)  ИЛИ нашлось(222)

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

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

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

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

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

      ТО заменить(222,5)

   КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’5’ * 10 + ’7’ * 30 + ’2’ * 50
while ’5’ in s or ’77’ in s or ’222’ in s:
    if ’5’ in s:
        s = s.replace(’5’, ’77’, 1)
    elif ’77’ in s:
        s = s.replace(’77’, ’7’, 1)
    elif ’222’ in s:
        s = s.replace(’222’, ’5’, 1)
print(sum((int(x) for x in s)))

Ответ: 11

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

Задача 71#11779Максимум баллов за задание: 1

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w.

Например, выполнение команды заменить (333,3)  преобразует строку 1333572  в строку 13572.

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

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

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

Строка исполнителя при этом не изменяется.

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции:

   ЕСЛИ условие

      ТО команда1

   КОНЕЦ ЕСЛИ Выполняется команда1 (если условие истинно).

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ Выполняется Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Напишите количество цифр 7  полученное в результате применения приведённой ниже программы к строке: 5...5 4...4 2...27...7?
◟ ◝1◜0 ◞ ◟ ◝1◜0-◞◟ ◝1◜0-◞◟ ◝1◜0-◞

НАЧАЛО

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

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

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

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

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

   КОНЕЦ ЕСЛИ

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

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

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

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

   КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’5’ * 10 + ’4’ * 10 + ’2’ * 10 + ’7’ * 10
while ’54’ in s or ’27’ in s:
    if ’55’ in s:
        s = s.replace(’55’, ’7’, 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)
print(s.count(’7’))

Ответ: 19

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

Задача 72#15984Максимум баллов за задание: 1

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

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

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

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

преобразует строку 05111150  в строку 0527150  .

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

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

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

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

выполняется, пока условие истинно.

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

Н АЧА ЛО

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

      зам енить(1111,1)

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 13  идущих подряд цифр 1  ? В ответе запишите полученную строку.

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

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

Исполнитель будет заменять по четыре единицы на одну (уменьшать количество единиц на 3  ). Тогда 13 − 3 − 3− 3− 3 = 1  . Столько единиц у нас останется в конце работы алгоритма.

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

s = ’1’ * 13

while ’1111’ in s:
    s = s.replace(’1111’, ’1’, 1)

print(s)



Ответ: 1

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

Задача 73#15985Максимум баллов за задание: 1

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

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

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

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

преобразует строку 05111150  в строку 0527150.

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

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

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

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

выполняется, пока условие истинно.

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

Н АЧА ЛО

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

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

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 15  идущих подряд цифр 1  ? В ответе запишите полученную строку.

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

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

На каждом шаге цикла мы заменяем три единицы на одну (уменьшаем количество единиц на 2  ) пока находим   4  единицы. Тогда на каком-то шаге мы получим 15− 2 − 2− 2− 2− 2 − 2 = 3  единицы. Но из-за условия на четыре единицы мы больше не зайдём в цикл и в итоге у нас так и останется три единицы.

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

s = ’1’ * 15

while ’1111’ in s:
    s = s.replace(’111’, ’1’, 1)

print(s)



Ответ: 111

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

Задача 74#15986Максимум баллов за задание: 1

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

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

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

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

преобразует строку 05111150  в строку 0527150.

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

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

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

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

выполняется, пока условие истинно.

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

Н АЧА ЛО

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

      зам енить(2323,23)

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 14  идущих подряд строк 23  ? В ответе запишите полученную строку.

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

Решение 1. Руками

Алгоритм на каждом шаге уменьшает количество строк 23  на 1  . Поэтому он сможет 13  раз зайти в цикл и получить в конце строку 23  . Снова в цикл мы не зайдем так как не найдётся 2323  .

Решение 2. Программой

n = ’23’ * 14
while ’2323’ in n:
    n = n.replace(’2323’, ’23’, 1)
print(n)

Ответ: 23

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

Задача 75#22892Максимум баллов за задание: 1

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

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

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

заменить(555,63)

преобразует строку 12555550  в строку 1263550.4

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

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

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

Цикл

П ОК А условие

   последовательность команд

К ОНЕ Ц ПО КА

выполняется, пока условие истинно.

Какая строка получится в результате применения приведённой ниже программы к строке вида 1...13...32 ...2  , состоящей из 170  единиц, 100  троек и 7  двоек?

Н АЧА ЛО

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

      заменить(112,4)

      заменить(113,2)

      заменить(42,3)

      заменить(43,1)

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Показать ответ и решение
s = "1" * 170 + "3" * 100 + "2" * 7
while "11" in s:
    s = s.replace("112", "4", 1)
    s = s.replace("113", "2", 1)
    s = s.replace("42", "3", 1)
    s = s.replace("43", "1", 1)
print(s)

Ответ: 22

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

Задача 76#23397Максимум баллов за задание: 1

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

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

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

Дана программа для исполнителя ОГУРЧИК:

Н АЧА ЛО

   П ОК А нашлось(10) И ЛИ наш лось(11) ИЛИ нашлось(330)

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

         Т О заменить(10,1)

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

         Т О заменить(11,3)

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

         Т О заменить(330,100)

      К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Найдите сумму цифр строки, полученной в результате применения приведённой выше программы к строке

1◟1-..◝.◜11◞0◟0-..◝.◜00◞3◟3-..◝.◜33◞.
   10     30     50

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 10  , то заменим 10  на 1  .

Получим строку 1 ...1 0...0 3...3
◟-◝1◜0 ◞ ◟ ◝2◜9 ◞ ◟ ◝5◜0-◞

На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем 10  , можем заметить, что если встречается 10  , то количество 0  уменьшается на один, а количество 1  остается неизменным, тогда можем выполнить это дейстие еще 29 раз, пока у нас не закончатся 0  .

Получим строку 1◟-.◝..◜1 ◞ 3◟. ◝..◜3 ◞
  10   50

Так как у нас уже нет комбинаций 10  , проверяем следующие условия: находим комбинацию 11  , заменим 11  на      3  . Заметим, что после выполнения данного действия количество 1  уменьшается на два, а количество 3  увеличивается на единицу, при этом все новообразованные 3  располагаются перед последоватетельностью из 1  . Повторим замену  11  на 3  еще 8∕∕2 = 4  раза, получим строку:

3◟-.◝..◜3 ◞
  55

Проверим. нет ли в строке комбинации 330  — нет, значит, завершаем работу алгоритма.

Запишем в ответ сумму всех цифр полученной после работы алгоритма строки: 3⋅55 = 165  . Запишем в ответ данное значение.

Решение прогой:

s = "1" * 10 + "0" * 30 + "3" * 50
while "10" in s or "11" in s or "330" in s:
    if "10" in s:
        s = s.replace("10", "1", 1)
    elif "11" in s:
        s = s.replace("11", "3", 1)
    elif "330" in s:
        s = s.replace("330", "100", 1)
print(sum([int(i) for i in s]))

Ответ: 165

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

Задача 77#23398Максимум баллов за задание: 1

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

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

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

Дана программа для исполнителя КЕГЛЯ:

Н АЧА ЛО

   П ОК А нашлось(10) И ЛИ наш лось(11) ИЛИ нашлось(330)

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

         Т О заменить(10,1)

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

         Т О заменить(11,3)

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

         Т О заменить(330,100)

      К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Найдите сумму всех цифр, отличных от 3  , полученной в результате применения приведённой выше программы к строке

11 ...1100 ...0033 ...33.
◟--◝5◜-◞◟--◝30◜0-◞◟--◝5◜-◞

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 10  , то заменим 10  на 1  .

Получим строку 1 ...1 0...0 3...3
◟-◝5◜ ◞ ◟ ◝2◜99 ◞ ◟ ◝◜5-◞

На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем 10  , можем заметить, что если встречается 10  , то количество 0  уменьшается на один, а количество 1  остается неизменным, тогда можем выполнить это дейстие еще 299 раз, пока у нас не закончатся 0  .

Получим строку 1◟-.◝..◜1 ◞ 3◟. ◝..◜3 ◞
  5     5

Так как у нас уже нет комбинаций 10  , проверяем следующие условия: находим комбинацию 11  , заменим 11  на      3  . Заметим, что после выполнения данного действия количество 1  уменьшается на два, а количество 3  увеличивается на единицу, при этом все новообразованные 3  располагаются перед последоватетельностью из 1  . Повторим замену  11  на 3  еще 3∕∕2 = 1  раз, получим строку:

3313◟-..◝.◜3 ◞
     5

Проверим. нет ли в строке комбинации 330  — нет, значит, завершаем работу алгоритма.

Запишем в ответ сумму всех цифр, отличных от 3  , полученной после работы алгоритма строки: 1  . Запишем в ответ данное значение.

Решение прогой:

s = "1" * 5 + "0" * 300 + "3" * 5
while "10" in s or "11" in s or "330" in s:
    if "10" in s:
        s = s.replace("10", "1", 1)
    elif "11" in s:
        s = s.replace("11", "3", 1)
    elif "330" in s:
        s = s.replace("330", "100", 1)
print(sum([int(i) for i in list(s) if int(i) != 3]))

Ответ: 1

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

Задача 78#23399Максимум баллов за задание: 1

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

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

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

Дана программа для исполнителя ПЕЛЬМЕНИ:

Н АЧА ЛО

   П ОК А нашлось(10) И ЛИ наш лось(11) ИЛИ нашлось(330)

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

         Т О заменить(10,1)

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

         Т О заменить(11,3)

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

         Т О заменить(330,100)

      К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Найдите сумму нечетных цифр строки, полученной в результате применения приведённой выше программы к строке

33 ...3311 ...1100 ...00.
◟--◝10◜0-◞◟--◝5◜5-◞◟-1◝0◜00-◞

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 10  , то заменим 10  на 1  .

Получим строку 3 ...3 1...1 0...0
◟-◝10◜0 ◞ ◟ ◝5◜5 ◞ ◟ ◝9◜99-◞

На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем 10  , можем заметить, что если встречается 10  , то количество 0  уменьшается на один, а количество 1  остается неизменным, тогда можем выполнить это дейстие еще 999 раз, пока у нас не закончатся 0  .

Получим строку 3◟-.◝..◜3 ◞ 1◟. ◝..◜1 ◞
  100   55

Так как у нас уже нет комбинаций 10  , проверяем следующие условия: находим комбинацию 11  , заменим 11  на      3  . Заметим, что после выполнения данного действия количество 1  уменьшается на два, а количество 3  увеличивается на единицу, при этом все новообразованные 3  располагаются после 1  . Повторим замену 11  на 3  еще 53∕∕2 = 26  раз, получим строку:

3◟-.◝..◜3 ◞ 1
  127

Проверим. нет ли в строке комбинации 330  — нет, значит, завершаем работу алгоритма.

Запишем в ответ сумму нечетных цифр полученной после работы алгоритма строки: 3⋅127 + 1 = 382  . Запишем в ответ данное значение.

Решение прогой:

s = "3" * 100 + "1" * 55 + "0" * 1000
while "10" in s or "11" in s or "330" in s:
    if "10" in s:
        s = s.replace("10", "1", 1)
    elif "11" in s:
        s = s.replace("11", "3", 1)
    elif "330" in s:
        s = s.replace("330", "100", 1)
print(sum([int(i) for i in list(s) if int(i) % 2 != 0]))

Ответ: 382

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

Задача 79#23400Максимум баллов за задание: 1

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

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

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

Дана программа для исполнителя ОРТОЦЕНТР:

Н АЧА ЛО

   П ОК А нашлось(10) И ЛИ наш лось(11) ИЛИ нашлось(330)

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

         Т О заменить(10,1)

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

         Т О заменить(11,3)

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

         Т О заменить(330,100)

      К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Найдите сумму всех цифр 3  , стоящих на нечетных позициях (нумерация индексов начинается с нуля), строки, полученной в результате применения приведённой выше программы к строке

11 ...1100 ...0033 ...33.
◟--◝11◜5-◞◟--◝20◜0-◞◟--◝5◜5-◞

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 10  , то заменим 10  на 1  .

Получим строку 1 ...1 0...0 3...3
◟-◝11◜5 ◞ ◟ ◝1◜99 ◞ ◟ ◝5◜5-◞

На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем 10  , можем заметить, что если встречается 10  , то количество 0  уменьшается на один, а количество 1  остается неизменным, тогда можем выполнить это дейстие еще 199 раз, пока у нас не закончатся 0  .

Получим строку 1◟-.◝..◜1 ◞ 3◟. ◝..◜3 ◞
  115   55

Так как у нас уже нет комбинаций 10  , проверяем следующие условия — находим 11  , меняем 11  на 3  .

Получим строку 31◟-.◝..◜1 ◞3◟-.◝..◜3 ◞
   113   55

Заметим, что после выполнения данного действия количество 1  уменьшается на два, а количество 3  увеличивается на единицу (но все появившиеся 3  ставятся слева). Тогда выполним это действие еще 113∕∕2 = 56  раз (так как у нас поделилось с остатком, то 1  останутся в количестве, равном данному остатку), после этого получим:

3◟-.◝..◜3 ◞ 13◟. ◝.◜.3◞
  57    55

На этом работа алгоритма завершится, ведь больше нет подходящих подстрок.

Запишем в ответ сумму цифр 3  , стоящих на нечетных позициях. Сначала определим индексы всех 3  : [0, 56] и [58, 112]. Теперь среди этих отрезков находим количество нечетных индексов — оно будет равно 56∕∕2 + (112 − 58)∕∕2 = 55  , тогда общая сумма подходящих нам цифр 3  равна 3 ⋅55 = 165  .

Решение прогой:

s = "1" * 115 + "0" * 200 + "3" * 55
while "10" in s or "11" in s or "330" in s:
    if "10" in s:
        s = s.replace("10", "1", 1)
    elif "11" in s:
        s = s.replace("11", "3", 1)
    elif "330" in s:
        s = s.replace("330", "100", 1)
print(sum([int(s[i]) for i in range(len(list(s))) if int(s[i]) == 3 and i % 2 != 0]))

Ответ: 165

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

Задача 80#23401Максимум баллов за задание: 1

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

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

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

Дана программа для исполнителя ХИ-ХИ:

Н АЧА ЛО

   П ОК А нашлось(10) И ЛИ наш лось(11) ИЛИ нашлось(330)

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

         Т О заменить(10,1)

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

         Т О заменить(11,3)

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

         Т О заменить(330,100)

      К ОН ЕЦ ЕС ЛИ

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Найдите произведение цифр строки, для полученной в результате применения приведённой выше программы к строке

11 ...1100 ...0033 ...33.
◟--◝1◜-◞◟--◝10◜0-◞◟--◝3◜-◞

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

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

Начнем работу нашего алгоритма. Так как в исходной строке мы нашли 10  , то заменим 10  на 1  .

Получим строку 10 ...0333
 ◟-◝9◜9 ◞

На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем 10  , можем заметить, что если встречается 10  , то количество 0  уменьшается на один, а количество 1  остается неизменным, тогда можем выполнить это дейстие еще 99 раз, пока у нас не закончатся 0  .

Получим строку 1333

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

Запишем в ответ произведение элементов полученной после работы алгоритма строки: 1⋅3⋅3 ⋅3 = 27  . Запишем в ответ данное значение.

Решение прогой:

s = "1" * 1 + "0" * 100 + "3" * 3
while "10" in s or "11" in s or "330" in s:
    if "10" in s:
        s = s.replace("10", "1", 1)
    elif "11" in s:
        s = s.replace("11", "3", 1)
    elif "330" in s:
        s = s.replace("330", "100", 1)
arr = [int(i) for i in s]
for i in range(len(arr) - 1):
    arr[i + 1] *= arr[i]
print(arr[-1])

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