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

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

Задача 1#85898

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

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

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

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

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

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

НАЧАЛО

   ПОКА нашлось (666) ИЛИ нашлось (000)

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

         ТО заменить (666, 00)

       ИНАЧЕ заменить (000, 6)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «6», а затем содержащая n цифр «0» (10 < n < 1050  ).

Определите наибольшее значение n, при котором в результате выполнения программы в строке не будет цифр «0» и строка будет содержать более одного символа.

Показать ответ и решение
for n in range(11, 1050):
    s =  ’6’ + n*’0’
    while ’666’ in s or ’000’ in s:
        if ’666’ in s:
            s = s.replace(’666’, ’00’, 1)
        else:
            s = s.replace(’000’, ’6’, 1)
    if ’0’ not in s and len(s) > 1:
        print(n)

Ответ: 1046

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

Задача 2#85897

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (14) ИЛИ нашлось (444) ИЛИ нашлось (22444)

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

      ТО заменить (22444, 411)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «1», а затем содержащая n цифр «4» (10 < n < 1000  ).

Определите наибольшее значение n, при котором в результате выполнения программы в строке будет находится хотя бы одна цифра «1», а также не более 50 цифр «2».

Показать ответ и решение
for n in range(11, 1000):
    s =  ’1’ + n*’4’
    while ’14’ in s or ’444’ in s or ’22444’ in s:
        s = s.replace(’14’, ’22’, 1)
        s = s.replace(’444’, ’1’, 1)
        s = s.replace(’22444’, ’411’, 1)
    if ’1’ in s and s.count(’2’) <= 50:
        print(n)

Ответ: 100

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

Задача 3#85896

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

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

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

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

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

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

НАЧАЛО

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

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

      ТО заменить (92, 25)

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

      ТО заменить (7777, 29)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «9», а затем содержащая n цифр «2» (200 < n < 850  ).

Определите наибольшее значение n, при котором в результате выполнения программы значение числа в строке будет оканчиваться на «79».

Показать ответ и решение
for n in range(201, 850):
    s =  ’9’ + n*’2’
    while ’92’ in s or ’252’ in s or ’222’ in s or ’7777’ in s:
        s = s.replace(’92’, ’25’, 1)
        s = s.replace(’252’, ’7’, 1)
        s = s.replace(’222’, ’79’, 1)
        s = s.replace(’7777’, ’29’, 1)
    if int(s) % 100 == 79:
        print(n)

Ответ: 845

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

Задача 4#85895

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (2222) ИЛИ нашлось (333)

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, содержащая n цифр «2» (5 < n < 1000  ).

Определите наибольшее значение n, при котором в результате выполнения программы количество цифр «2» в строке будет меньше количества цифр «3».

Показать ответ и решение
for n in range(6, 1000):
    s =  n*’2’
    while ’2222’ in s or ’333’ in s:
        s = s.replace(’2222’, ’3’, 1)
        s = s.replace(’333’, ’23’, 1)
    if s.count(’2’) < s.count(’3’):
        print(n)

Ответ: 996

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

Задача 5#85894

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (666) ИЛИ нашлось (333)

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «3», а затем содержащая n цифр «6» (5 < n < 1000  ).

Определите минимальное трехзначное значение n, при котором в результате выполнения программы значение числа в строке будет кратно 11 и не кратно 6.

Показать ответ и решение
for n in range(100, 1000):
    s =  ’3’ + n*’6’
    while ’666’ in s or ’333’ in s:
        s = s.replace(’666’, ’33’, 1)
        s = s.replace(’333’, ’6’, 1)
    if int(s) % 11 == 0 and int(s) % 6 != 0:
        print(n)

Ответ: 103

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

Задача 6#85893

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

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

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

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

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

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

НАЧАЛО

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

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «1», а затем содержащая n цифр «2» и n цифр «3».

Определите минимальное значение n (n ∈ [200;500]  и n  - четное), при котором в результате выполнения программы строка будет содержать ровно 106 цифр «3».

Показать ответ и решение
for n in range(200, 501):
    s =  ’1’ + n*’2’  + n*’3’
    while ’333’ in s or ’13’ in s or ’12’ in s:
        s = s.replace(’333’, ’21’, 1)
        s = s.replace(’13’, ’32’, 1)
        s = s.replace(’12’, ’11’, 1)
    if s.count(’3’) == 106:
        print(n)

Ответ: 418

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

Задача 7#85892

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (4888) ИЛИ нашлось (888) ИЛИ нашлось (49)

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

      ТО заменить (4888, 944)

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры 4, а затем n подряд идущих цифр 8 (n ∈ (357;499]  и n  – четное). Определите наибольшее значение n, при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, кратна 37.

Показать ответ и решение
for n in range(358,500,2):
    s = ’4’+’8’*n
    while ’4888’ in s or ’888’ in s or ’49’ in s:
        if ’4888’ in s:
            s = s.replace(’4888’,’944’,1)
        if ’888’ in s:
            s = s.replace(’888’,’9’,1)
        if ’49’ in s:
            s = s.replace(’49’,’4’,1)
    if sum(map(int,s)) % 37 == 0:
        print(n)

Ответ: 494

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

Задача 8#85891

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (055) ИЛИ нашлось (65) ИЛИ нашлось (5555)

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

      ТО заменить (055, 56)

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

      ТО заменить (5555, 000)

   КОНЕЦ ЕСЛИ

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

      ТО заменить (00000, 6)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, содержащая n цифр «5» и заканчивающаяся цифрой «0» (3 < n < 2500).

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

Показать ответ и решение
a = set()
for n in range(4, 2500):
    s = n*’5’ + ’0’
    while ’055’ in s or ’65’ in s or ’5555’ in s or ’00000’ in s:
        s = s.replace(’055’, ’56’, 1)
        s = s.replace(’65’, ’5’, 1)
        s = s.replace(’5555’, ’000’, 1)
        s = s.replace(’00000’, ’6’, 1)
    a.add(sum(map(int, s)))
print(max(a))

Ответ: 15

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

Задача 9#85890

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (74) ИЛИ нашлось (5444) ИЛИ нашлось (444)

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

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

   КОНЕЦ ЕСЛИ

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

      ТО заменить (5444, 477)

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «7», а затем содержащая n цифр «4» (4 < n < 1000).

Определите минимальное значение n, при котором в результате выполнения программы строка будет содержать 20 цифр «7».

Показать ответ и решение
for n in range(5, 1000):
    s = ’7’+n*’4’
    while ’74’ in s or ’5444’ in s or ’444’ in s:
        s = s.replace(’74’, ’44’, 1)
        s = s.replace(’5444’, ’477’, 1)
        s = s.replace(’444’, ’55’, 1)
    if s.count(’7’) == 20:
        print(n)

Ответ: 59

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

Задача 10#85889

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (31) ИЛИ нашлось (11111) ИЛИ нашлось (144)

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

      ТО заменить (144, 133)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «3», а затем содержащая n цифр «1» (5 < n < 1000).

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

Показать ответ и решение
for n in range(6, 1000):
    s = ’3’+n*’1’
    while ’31’ in s or ’11111’ in s or ’144’ in s:
        s = s.replace(’31’, ’4’, 1)
        s = s.replace(’11111’, ’33’, 1)
        s = s.replace(’144’, ’133’, 1)
    if sum(map(int, s)) == 160:
        print(n)

Ответ: 135

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

Задача 11#84346

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

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

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

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

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

НАЧАЛО

   ПОКА нашлось (37) ИЛИ нашлось (577) ИЛИ нашлось (7777)

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

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

      КОНЕЦ ЕСЛИ

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

         ТО заменить (577, 73)

      КОНЕЦ ЕСЛИ

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

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

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с цифры «3», затем содержащая n цифр «7» (10 < n < 1000).

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

Показать ответ и решение
for n in range(11, 1000):
    s = ’3’ + n * ’7’
    while ’37’ in s or ’577’ in s or ’7777’ in s:
        if ’37’ in s:
            s = s.replace(’37’,’7’,1)
        if ’577’ in s:
            s = s.replace(’577’,’73’,1)
        if ’7777’ in s:
            s = s.replace(’7777’,’5’,1)
    if sum(int(i) for i in s) == 57 and int(s[-1]) == 3:
        print(n)
        break

Ответ: 520

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

Задача 12#74231

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

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

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

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

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

    Цикл
       ПОКА условие
         последовательность команд
       КОНЕЦ ПОКА
    выполняется, пока условие истинно.
    В конструкции
       ЕСЛИ условие
         ТО команда1
        ИНАЧЕ команда2
       КОНЕЦ ЕСЛИ
    выполняется команда1 (если условие истинно) или команда2 (если условие
ложно).

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

НАЧАЛО
ПОКА нашлось (36) ИЛИ нашлось (63) ИЛИ нашлось (69)
 ЕСЛИ нашлось (69)
   ТО заменить (69, 63)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (36)
   ТО заменить (36, 3)
 КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (63)
   ТО заменить (63, 9)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с 20 цифр «3», а затем содержащая 26 цифр «6» и 31 цифры «9». В ответ укажите количество замен.

Показать ответ и решение
c = 0
s = ’3’ * 20 + ’6’ * 26 + ’9’ * 31
while (’36’ in s) or (’63’ in s) or (’69’) in s:
    if ’69’ in s:
        s = s.replace(’69’, ’63’, 1)
        c += 1
    if ’36’ in s:
        s = s.replace(’36’,’3’,1)
        c += 1
    if ’63’ in s:
        s = s.replace(’63’,’9’,1)
        c += 1
print(c)

Ответ: 39

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

Задача 13#74230

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

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

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

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

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

    Цикл
       ПОКА условие
         последовательность команд
       КОНЕЦ ПОКА
    выполняется, пока условие истинно.
    В конструкции
       ЕСЛИ условие
         ТО команда1
        ИНАЧЕ команда2
       КОНЕЦ ЕСЛИ
    выполняется команда1 (если условие истинно) или команда2 (если условие
ложно).

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

НАЧАЛО
ПОКА нашлось (36) ИЛИ нашлось (63) ИЛИ нашлось (69)
 ЕСЛИ нашлось (69)
   ТО заменить (69, 63)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (36)
   ТО заменить (36, 66)
 КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (63)
   ТО заменить (63, 9)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с 13 цифр «3», а затем содержащая 26 цифр «6» и 12 цифры «9». В ответ укажите сумму цифр данной строки.

Показать ответ и решение
s = ’3’ * 13 + ’6’ * 26 + ’9’ * 12
while (’36’ in s) or (’63’ in s) or (’69’) in s:
    if ’69’ in s: s = s.replace(’69’, ’63’, 1)
    if ’36’ in s: s = s.replace(’36’,’66’,1)
    if ’63’ in s: s = s.replace(’63’,’9’,1)
print(sum(map(int,s)))

Ответ: 108

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

Задача 14#74229

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

НАЧАЛО

   ПОКА нашлось (07) ИЛИ нашлось (711) ИЛИ нашлось (777)

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

         ТО заменить (07, 71)

      КОНЕЦ ЕСЛИ

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

      ТО заменить(711,07)

      КОНЕЦ ЕСЛИ

      ИНАЧЕ заменить(777,70)

   КОНЕЦ ПОКА

КОНЕЦ

На вход программе подана строка состоящая из 30 подряд идущих символов 0, а затем 20 подряд идущих символов 7 и в конце 15 подряд идущих символов 1. В ответ запишите количество нечётных цифр в строке.

Показать ответ и решение
s = ’0’*30 + ’7’*20 + ’1’*15
while ’07’ in s or ’711’ in s or ’777’ in s:
    if ’07’ in s:
        s = s.replace(’07’,’71’,1)
    if ’711’ in s:
        s = s.replace(’711’,’07’,1)
    else:
        s = s.replace(’777’,’70’,1)
print(s.count(’7’)+s.count(’1’))

Ответ: 15

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

Задача 15#74228

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

НАЧАЛО

   ПОКА нашлось (07) ИЛИ нашлось (711) ИЛИ нашлось (777)

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

         ТО заменить (07, 71)

      КОНЕЦ ЕСЛИ

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

         ТО заменить(711,07)

      КОНЕЦ ЕСЛИ

      ИНАЧЕ заменить(777,7)

   КОНЕЦ ПОКА

КОНЕЦ

На вход программе подана строка состоящая из 120 подряд идущих символов 0, а затем 230 подряд идущих символов 7 и в конце 160 подряд идущих символов 1. В ответ запишите получившуюся строку.

Показать ответ и решение
s = ’0’*120 + ’7’*230 + ’1’*160
while ’07’ in s or ’711’ in s or ’777’ in s:
    if ’07’ in s:
        s = s.replace(’07’,’71’,1)
    elif ’711’ in s:
        s = s.replace(’711’,’07’,1)
    else:
        s = s.replace(’777’,’7’,1)
print(s)

Ответ: 7171

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

Задача 16#74227

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w  . Например, выполнение команды заменить (111,27)  преобразует строку 05111150  в строку 0527150  .

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

   команда1

ИНАЧЕ

   команда2

КОНЕЦ ЕСЛИ

Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

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

НАЧАЛО

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

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

        ТО заменить (1111,41)

      ИНАЧЕ заменить (444, 1)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка состояла из n цифр «1», при этом не содержав других цифр. Укажите минимальное значение n, при котором сумма цифр в строке будет равна количеству замен.

Показать ответ и решение
for n in range(1,1500):
    c = 0
    s = n*’1’
    while ’1111’ in s or ’444’ in s:
        if (’1111’) in s:
            s = s.replace(’1111’,’41’,1)
            c += 1
        else:
            s = s.replace(’444’,’1’,1)
            c += 1
    if c == sum(map(int,s)):
        print(n)
        break

Ответ: 12

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

Задача 17#74226

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

НАЧАЛО

   ПОКА нашлось (07) ИЛИ нашлось (711)

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

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

      ИНАЧЕ заменить(711,0)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

На вход программе подана строка состоящая из 120 подряд идущих символов 0, а затем 230 подряд идущих символов 7 и в конце 160 подряд идущих символов 1. Сколько замен произойдет в ходе работы алгоритма?

Показать ответ и решение
c = 0
s = ’0’*120 + ’7’*230 + ’1’*160
while ’07’ in s or ’711’ in s:
    if ’07’ in s:
        s = s.replace(’07’,’7’,1)
        c += 1
    elif ’711’ in s:
        s = s.replace(’711’,’0’,1)
        c += 1
print(c)

Ответ: 121

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

Задача 18#74225

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (121, 3) преобразует строку 112112 в строку 1312.

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

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

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

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

НАЧАЛО

   ПОКА нашлось (38) или нашлось (34)

      заменить (38, 434)

      заменить (34, 188)

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка начиналась и заканчивалась тройкой, а в середине содержала сначала четверки ,затем восьмерки. После выполнения данной программы получилась строка, содержащая 39 четверки и 37 восьмерок. Сколько четверок и восьмерок в сумме было в исходной строке?

Показать ответ и решение
for n in range(1,100):
    for m in range(1,100):
        s = ’3’ + n*’4’ + m*’8’ + ’3’
        while (’38’ in s) or (’34’ in s):
            s = s.replace(’38’,’434’, 1)
            s = s.replace(’34’,’188’, 1)
        if s.count(’4’) == 39 and s.count(’8’) == 37:
            print(n+m)
            break

Ответ: 75

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

Задача 19#74224

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

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

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

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

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

Ниже приведена программа для исполнителя Редактор.

НАЧАЛО

   ПОКА нашлось (577) ИЛИ нашлось (775)

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

         ТО заменить (577, 755)

      ИНАЧЕ заменить (775, 57)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

На вход этой программе подается строка, состоящая из n цифр (3 < n < 1000); первая и последняя цифра в строке — цифра 5, а остальные цифры – семёрки. При каком наименьшем n сумма цифр строки будет чётной и при этом будет больше 223? В ответе укажите число n.

Показать ответ и решение
for n in range(4,1000):
    s = ’5’+(n-2)*’7’ + ’5’
    while ’577’ in s or ’775’ in s:
        if ’577’ in s: s = s.replace(’577’,’755’,1)
        else: s = s.replace(’775’,’57’, 1)
    if sum(map(int,s)) > 223 and sum(map(int,s)) % 2 == 0:
        print(n)
        break

Ответ: 38

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

Задача 20#74223

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

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

Эта команда заменяет в строке первое слева вхождение последовательности v  на последовательность w  . Например, выполнение команды заменить (111,27)  преобразует строку 05111150  в строку 0527150  .

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

   команда1

ИНАЧЕ

   команда2

КОНЕЦ ЕСЛИ

Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

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

НАЧАЛО

   ПОКА нашлось (6666) ИЛИ нашлось (9999)

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

        ТО заменить (6666, 699)

      ИНАЧЕ заменить (9999, 6)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка содержала больше 150 шестерок, при этом не содержав других цифр. Укажите сумму значений n на отрезке [151;500], при которых количество шестерок в строке вдвое меньше количества девяток.

Показать ответ и решение
ans = 0
for n in range(151,501):
    s = n*’6’
    while ’6666’ in s or ’9999’ in s:
        if (’6666’) in s:s = s.replace(’6666’,’699’,1)
        else: s = s.replace(’9999’,’6’,1)
    if s.count(’6’) * 2 == s.count(’9’):
        ans += n
print(ans)

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