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

12.03 Исполнитель «Редактор» – определение исходной строки по результату

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

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

Задача 1#25097

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

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

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

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

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

      ТО команда1

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

КОНЕЦ ЕСЛИ

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

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

 

НАЧАЛО

ПОКА нашлось (01)  ИЛИ нашлось (02)  ИЛИ нашлось (03)

   заменить (01,2302)

   заменить (02,10)

   заменить (03,201)

КОНЕЦ ПОКА

КОНЕЦ

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

Можно понять суть изменений:

x : 01 → 2302 → 2310  - до начала было x  единиц, станет x  двоек, x  троек, x  единиц

y : 02 → 10  - до начала было y  двоек, станет y  единиц

z : 03 → 201 → 22302 → 22310  - до начала было z  троек, станет 2z  троек, z  троек, z  единиц

Получается, x + y+ z  единиц, x + 2z  двоек, x+ z  троек.

Решим систему:

(
||  x + y+ z = 58
|{
|  x + 2z = 23
||(  x + z = 15

x = 7,y = 43,z = 8

Ответ: 43.

Ответ: 43

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

Задача 2#25556

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

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

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

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

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

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

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

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

Цикл

   ПОКА условие

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

   КОНЕЦ ПОКА

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

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

НАЧАЛО

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

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

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

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for i in range(200, 1000):
    s = ’5’*i
    counter = 0  # чтобы избежать бесконечных циклов
    while ’55’ in s:
        s = s.replace(’555’, ’44’, 1)
        s = s.replace(’444’, ’555’, 1)
        counter += 1
        if counter > 100000:
            s = ’0’
            break
    if s.count(’5’) >= 1:
        print(i)
        break
 

Ответ: 202

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

Задача 3#25583

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

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

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

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

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

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

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

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

Цикл

   ПОКА условие

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

   КОНЕЦ ПОКА

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

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

НАЧАЛО

   ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)

      заменить (01, 30)

      заменить (02, 101)

      заменить (03, 202)

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for i in range(50):
    for j in range(50):
        for k in range(50):
            s = ’0’ + ’1’ * i + ’2’ * j + ’3’ * k
            temp = s
            while ’01’ in s or ’02’ in s or ’03’ in s:
                s = s.replace(’01’, ’30’, 1)
                s = s.replace(’02’, ’101’, 1)
                s = s.replace(’03’, ’202’, 1)
            if s.count(’1’) == 15 and s.count(’2’) == 10 and s.count(’3’) == 60:
                print(temp.count(’1’))

Ответ: 45

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

Задача 4#54925

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

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

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

   команда1

ИНАЧЕ

   команда2

КОНЕЦ ЕСЛИ

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

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

НАЧАЛО

   ПОКА нашлось (3333) ИЛИ нашлось (8888)

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

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

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

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка содержала больше 350 троек, при этом не содержав других цифр. При каком наименьшем количестве троек в результате выполнения программы получилась строка, состоящая только из восьмёрок?

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

Программная реализация:

    for x in range(350, 380):
    s = ’3’*x
    while ’3333’ in s or ’8888’ in s:
        if ’3333’ in s:
            s = s.replace(’3333’, ’888’, 1)
        else:
            s = s.replace(’8888’, ’3’, 1)
    if not ’3’ in s:
        print(x)
        break

В результате программы на экран будет выведено число 355.

Ответ: 355

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

Задача 5#56201

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

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

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

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

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

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

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

НАЧАЛО

   ПОКА нашлось (50) или нашлось (57)

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

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

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for m in range(300):
    f = 0
    for n in range(300):
        s = ’5’ + m*’0’ + n*’7’ + ’5’
        while ’50’ in s or ’57’ in s:
            s = s.replace(’50’, ’77’, 1)
            s = s.replace(’57’, ’075’, 1)
        if s.count(’0’) == 23 and s.count(’7’) == 32:
            print(m)
            f = 1
            break
    if f == 1:
        break

Ответ: 24

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

Задача 6#56202

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

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

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

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

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

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

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

НАЧАЛО

   ПОКА нашлось (12) или нашлось (13) или нашлось (14)

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

      заменить (13, 211)

      заменить (14, 321)

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for m in range(100):
    f = 0
    for n in range(100):
        for k in range(100):
            s = ’1’ + m*’2’ + n*’3’ + k*’4’
            while ’12’ in s or ’13’ in s or ’14’ in s:
                s = s.replace(’12’, ’4’, 1)
                s = s.replace(’13’, ’211’, 1)
                s = s.replace(’14’, ’321’, 1)
            if s.count(’2’) == 10 and s.count(’3’) == 20 and s.count(’4’) == 30:
                print(m*k)
                f = 1
                break
        if f == 1:
            break
    if f == 1:
        break
 

Ответ: 319

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

Задача 7#56211

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

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

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

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

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

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

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

НАЧАЛО

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

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

      заменить (13, 21)

      заменить (14, 31)

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for m in range(50):
    f = 0
    for n in range(50):
        for k in range(50):
            s = ’1’ + ’2’*m + ’3’*n + ’4’*k + ’1’
            while ’11’ not in s:
                s = s.replace(’12’, ’41’, 1)
                s = s.replace(’13’, ’21’, 1)
                s = s.replace(’14’, ’31’, 1)
            if s.count(’2’) == 13 and s.count(’3’) == 26 and s.count(’4’) == 39:
                f = 1
                print(len(s))
                break
        if f == 1:
            break
    if f == 1:
        break

Ответ: 80

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

Задача 8#56212

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

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

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

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

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

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

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

НАЧАЛО

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

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

      заменить (5555, 33)

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for n in range(124, 300):
    s = ’3’*n
    while ’3333’ in s:
        s = s.replace(’3333’, ’555’, 1)
        s = s.replace(’5555’, ’33’, 1)
    if s.count(’3’) == 5:
        print(n)
        break

Ответ: 131

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

Задача 9#56213

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

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

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

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

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

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

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

НАЧАЛО

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

      заменить (666, 0)

      заменить (000, 66)

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for n in range(101, 300):
    s = ’6’*n
    while ’666’ in s:
        s = s.replace(’666’, ’0’, 1)
        s = s.replace(’000’, ’66’, 1)
    if s == ’006’:
        print(n)
        break

Ответ: 105

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

Задача 10#56313

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

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

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

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

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

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

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

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

Цикл

   ПОКА условие

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

   КОНЕЦ ПОКА

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

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

НАЧАЛО

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

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

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

   КОНЕЦ ПОКА

КОНЕЦ

В результате работы программы к строке 1◟. ◝.◜.1◞2◟. ◝.◜.2◞3◟. ◝.◜.3◞
 30    ?    6  получилась строка, в которой содержится 35  цифр     2  . Сколько цифр 2  было в изначальной строке?

Показать ответ и решение
for i in range(100):
    n = ’1’ * 30 + ’2’ * i + ’3’ * 6
    while ’12’ in n:
        n = n.replace(’12’, ’2’, 1)
        n = n.replace(’23’, ’3’, 1)
    if n.count(’2’) == 35:
        print(i)
        break

 

Ответ: 65

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

Задача 11#61628

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

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

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

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

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

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

НАЧАЛО

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

      заменить (32, 44)

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

   КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for x1 in range(50):
    for x2 in range(50):
        s = ’3’ + ’2’*x1 + ’4’*x2 +’3’
        while (’32’ in s) or (’34’ in s):
            s = s.replace(’32’,’44’,1)
            s = s.replace(’34’,’243’,1)
        if s.count(’2’) == 36 and s.count(’4’) == 47:
            print(x1)

Ответ: 37

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

Задача 12#63105

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

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

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

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

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

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

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

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

Цикл

   ПОКА условие

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

   КОНЕЦ ПОКА

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

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

НАЧАЛО

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

      заменить(15,5)

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

   КОНЕЦ ПОКА

КОНЕЦ

В результате работы программы к строке 1◟. ◝.◜.1◞5◟. ◝.◜.5◞3◟. ◝.◜.3◞
 44    ?    12  получилась строка, в которой содержится 30  цифр     5  . Сколько цифр 5  было в изначальной строке?

Показать ответ и решение
for i in range(100):
    n = "1" * 44 + "5" * i + "3" * 12
    while "15" in n:
        n = n.replace("15", "5", 1)
        n = n.replace("53", "3", 1)
    if n.count("5") == 30:
        print(i)
        break

 

Ответ: 74

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

Задача 13#63219

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

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (83) или нашлось (84)

заменить (83, 33)

заменить (84, 438)

КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for t in range(1, 100):
    for f in range(1, 100):
        s = ’8’ + t * ’3’ + f * ’4’ + ’8’
        while ’83’ in s or ’84’ in s:
            s = s.replace(’83’, ’33’, 1)
            s = s.replace(’84’, ’438’, 1)
        if s.count(’3’) == 27 and s.count(’4’) == 37:
            print(f)

Ответ: 37

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

Задача 14#63222

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

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

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

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

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

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

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

НАЧАЛО

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

заменить (2222, 44)

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

КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for i in range(151, 200):
    s = i * ’2’
    while ’2222’ in s:
        s = s.replace(’2222’, ’44’, 1)
        s = s.replace(’444’, ’22’, 1)
    if s.count(’2’) == 4:
        print(i)

Ответ: 154

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

Задача 15#63223

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

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

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

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

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

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

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

НАЧАЛО

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

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

заменить (13, 21)

заменить (14, 31)

КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for i in range(1, 50):
    for t in range(1, 50):
        for f in range(1, 50):
            s = ’1’ + i * ’2’ + t * ’3’ + f * ’4’ + ’1’
            length = len(s)
            while ’11’ not in s:
                s = s.replace(’12’, ’41’, 1)
                s = s.replace(’13’, ’21’, 1)
                s = s.replace(’14’, ’31’, 1)
            if s.count(’2’) == 17 and s.count(’3’) == 31 and s.count(’4’) == 43:
                print(length)

Ответ: 93

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

Задача 16#63224

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

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

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

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

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

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

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

НАЧАЛО

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

заменить (31, 443)

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

КОНЕЦ ПОКА

КОНЕЦ

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

Показать ответ и решение
for i in range(1, 100):
    for j in range(1, 100):
        s = ’3’ + i * ’1’ + j * ’4’ + ’3’
        while ’31’ in s or ’34’ in s:
            s = s.replace(’31’, ’443’, 1)
            s = s.replace(’34’, ’13’, 1)
        if s.count(’1’) == 35 and s.count(’4’) == 44:
            print(i+j)

Ответ: 57

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

Задача 17#72469

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

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

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

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

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

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

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

НАЧАЛО
ПОКА нашлось (744) ИЛИ нашлось (4444) ИЛИ нашлось (344)
 ЕСЛИ нашлось (744)
   ТО заменить (744, 33)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (4444)
   ТО заменить (4444, 73)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (344)
   ТО заменить (344, 4)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Показать ответ и решение
for n in range(6,1000):
    s = ’7’+’4’*n
    while ’744’ in s or ’4444’ in s or ’344’ in s:
        if ’744’ in s:s = s.replace(’744’,’33’,1)
        if ’4444’ in s:s = s.replace(’4444’,’73’,1)
        if ’344’ in s:s = s.replace(’344’,’4’,1)
    ans = sum(map(int,s))
    if ans == 80:
        print(n)

Ответ: 77

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

Задача 18#72498

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

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

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

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

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

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

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

НАЧАЛО
ПОКА нашлось (3966) ИЛИ нашлось (6666) ИЛИ нашлось (963)
 ЕСЛИ нашлось (3966)
   ТО заменить (3966, 96)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (6666)
   ТО заменить (6666, 339)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (963)
   ТО заменить (963, 6)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Показать ответ и решение
for n in range(5,1000):
    s = ’39’+’6’*n
    while ’3966’ in s or ’6666’ in s or ’963’ in s:
        if ’3966’ in s:s = s.replace(’3966’,’96’,1)
        if ’6666’ in s:s = s.replace(’6666’,’339’,1)
        if ’963’ in s:s = s.replace(’963’,’6’,1)
    ans = sum(map(int,s))
    if ans == 60:
        print(n)

Ответ: 23

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

Задача 19#72500

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

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

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

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

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

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

НАЧАЛО
ПОКА нашлось (1222) ИЛИ нашлось (1212) ИЛИ нашлось (132)
 ЕСЛИ нашлось (1222)
   ТО заменить (1222, 121)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (1212)
   ТО заменить (1212, 13)
 КОНЕЦ ЕСЛИ
 ЕСЛИ нашлось (132)
   ТО заменить (132, 33)
 КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Показать ответ и решение
for n in range(5,1000):
    s = ’1’+’2’*n
    while ’1222’ in s or ’1212’ in s or ’132’ in s:
        if ’1222’ in s:s = s.replace(’1222’,’121’,1)
        if ’1212’ in s:s = s.replace(’1212’,’13’,1)
        if ’132’ in s:s = s.replace(’132’,’33’,1)
    ans = sum(map(int,s))
    if ans > 1000:
        print(n)
        break

Ответ: 503

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

Задача 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
Рулетка
Вы можете получить скидку в рулетке!