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

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

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

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

Задача 1#6051

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 125 идущих подряд цифр 7?

НАЧАЛО

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

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

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

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

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

   КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

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

s = ’7’*125
while ’777’ in s:
    if ’7777’ in s:
        s = s.replace(’7777’,’6’,1)
    if ’666’ in s:
        s = s.replace(’666’,’7’,1)
print(s)

Ручное решение

Если в строке достаточно число семерок, то после того как тело цикла будет выполнено три раза, первые двенадцать семерок заменятся на три шестерки. При следующем выполнении цикла после первой команды эти три шестерки заменятся на одну семерку, после чего процесс будет продолжаться: двенадцать семерок заменятся на три шестерки, а три шестерки – на одну семерку. Становится ясно, что цикл преобразует двенадцать семерок в одну семерку. После того как цикл повторяется 10 раз, у нас станет 120∕12 = 10  семерок и оставшиеся 125 − 120 = 5  семерок, в общей сумме 10 + 5 = 15  семерок. Двенадцать из этих семерок заменятся на три шестерки, получится строка 666777  . Так как в этой строке есть три семерки, условие цикла еще раз выполнится и у нас получится строка 7777, условие цикла сработает и у нас получится строка 6, а выполнение программы на этом завершится.

Ответ: 6

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

Задача 2#6052

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 92 идущих подряд цифр 9?

НАЧАЛО

Пока нашлось (999999 )

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

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

ИНАЧЕ

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

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

КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

Если в строке достаточное число девяток, то после того как тело цикла будет выполнено три раза, первые девять девяток заменятся на три тройки. При следующем выполнении цикла после первой команды эти три тройки заменятся на одну девятку, после чего процесс будет продолжаться: девять девяток заменятся на три тройки, а три тройки – на одну девятку. Становится ясно, что цикл преобразует девять девяток в одну девятку. После того как цикл повторяется 9 раз, у нас станет 81∕9 =  9  девяток, которые затем преобразуются в 9/9=1 девятку и оставшиеся 92 − 81 = 11  девяток, в общей сумме 11 + 1 = 12  девяток. Две девятки заменятся на две тройки, получится строка 33999999  останется еще шесть девяток, затем три девятки заменятся на одну тройку, получится строка 333999  . Так как в этой строке нет шести девяток, условие цикла не выполнится, а выполнение программы на этом завершится.

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

s=’9’*92
while ’999999’ in s:
    if (’333’ in s):
        s=s.replace (’333’,’9’,1)
    else:
        s=s.replace (’999’,’3’,1)
print(s)

Ответ: 333999

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

Задача 3#6053

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 1000 идущей подряд цифры 5?

НАЧАЛО

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

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

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

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

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

   КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

Если в строке достаточно число пятерок, то после того как тело цикла будет выполнено шесть раз, первые тридцать пятерок заменятся на шесть семерок. При следующем выполнении цикла после первой команды эти шесть семерок заменятся на одну пятерку, после чего процесс будет продолжаться: тридцать пятерок заменятся на шесть семерок, а шесть семерок – на одну пятерку. Становится ясно, что цикл преобразует тридцать пятерок в одну пятерку. После того как цикл повторяется 33 раза, у нас станет 990∕30 =  33  пятерки и оставшиеся 1000 − 990 = 10  пятерок, в общей сумме 10 + 33 = 43  пятерки. Тридцать из них заменятся на одну пятерку, в итоге получится строка из 43 − 30 + 1 = 14  пятерок, первые десять пятерок замнеятся на две семерки, а оставшиеся 14 − 10 =  4  пятерки станутся, в итоге получится строка 775555  . Так как в этой строке нет пяти пятерок, условие цикла не выполнится, а выполнение программы на этом завершится.

Ответ: 775555

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

Задача 4#6278

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите число, которое будет получено в результате перемножения всех цифр строки, напечатанной после применения приведённой выше программы к строке 55 ...55 77...77 22...22 .
◟--◝◜--◞ ◟-◝◜--◞ ◟--◝◜--◞
   37       56       5

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

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

Изначально была строка 5(37)7(56)2(5).  Самое приоритетное действие в цикле ПОКА – это замена 5 на 77. На протяжении всей работы программы оно будет выполняться до тех пор, пока пятерок не останется вообще. Для текущей же строки все пятерки заменятся парами семерок, которых будет в 2 раза больше, чем изначальное количество пятерок, т.е. 74.

5   7   2   →  7    2
 (37) (56) (5)     (130) (5)

Второе по приоритету действие - это замена пары семерок на одну семерку. Это действие перестанет выполняться, когда количество семерок не станет 1.

7(130)2(5) → 7(1)2(5)

Теперь можно просчитать вручную, т.к. программа близка к завершению:

7  2   →  7  5  2   →  7  2   →  7   2  →  7   2
 (1) (5)     (1) (1)(2)    (3) (2)    (2) (2)    (1) (2)

Перемножим эти цифры: 7 ⋅ 2 ⋅ 2 = 28

Ответ: 28

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

Задача 5#6279

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите сумму цифр строки, полученной в результате применения приведённой выше программы к строке 77 ...7733 ...33 88...88 .
◟--◝◜--◞◟--◝◜--◞ ◟-◝ ◜-◞
   16      1600      8

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

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

Изначально была строка 7(16)3(1600)8(8).  Самое приоритетное действие в цикле ПОКА – это замена 7 на 33. На протяжении всей работы программы оно будет выполняться до тех пор, пока семерок не останется вообще. Для текущей же строки все семерки заменятся парами троек, которых будет в 2 раза больше, чем изначальное количество семерок, т.е. 32.

7(16)3(1600)8 (8) → 3(1632)8(8)

Второе по приоритету действие - это замена пары троек на одну тройку. Это действие перестанет выполняться, когда количество троек станет 1.

3(1632)8(8) → 3(1)8 (8)

Прогоним вручную по шагам программы полученную строку.

3(1)8(8) →  3(1)7(1)8(5) → 3(3)8 (5) → 3(2)8(5) → 3(1)8(5)

3(1)8(5) →  3(1)7(1)8(2) → 3(3)8 (2) → 3(2)8(2) → 3(1)8(2)

Сумма цифр равна 3 + 8 + 8 = 19.

Ответ: 19

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

Задача 6#6280

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите число, которое получится в результате возведения числа, составленного из всех цифр, кроме последней в строке, полученной в результате применения приведённой выше программы к строке 7◟7..◝.◜77◞ 3◟3..◝.◜33◞8◟8-.◝.◜.88◞,
  500      120      280  в степень, равную последней цифре полученной строки. Так, если после выполнения программы получилась строка 352, то ответом будет являться   2
35  = 1225.

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

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

Изначально была строка 7(500)3(120)8(280).  Самое приоритетное действие в цикле ПОКА – это замена 7 на 33. На протяжении всей работы программы оно будет выполняться до тех пор, пока семерок не останется вообще. Для текущей же строки все семерки заменятся парами троек, которых будет в 2 раза больше, чем изначальное количество семерок, т.е. 1000.

7(500)3(120)8 (280) → 3(1120)8(280)

Второе по приоритету действие - это замена пары троек на одну тройку. Это действие перестанет выполняться, когда количество троек станет 1.

3(1120)8(280) →  3(1)8(280)

Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной тройки и какого-то количества восьмерок, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной семерки, двух троек или трех восьмерок не будет нарушено.

3  8    →  3   7  8    →  3   8    →  3  8     →  3  8
 (1) (280)    (1) (1) (277)    (3) (277)    (2) (277)    (1) (277)

Итак, из 3(1)8(280)   мы получили 3(1)8(277),  значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество восьмерок.

За один шаг количество уменьшилось на 3, значит нужно вычесть из 280 ближайшее к этому числу значение, кратное 3, т.е. 276.

3(1)8(280) → 3(1)8(4)

Теперь снова вручную прогоним полученную строку.

3(1)8(4) →  3(1)7(1)8(1) → 3(3)8 (1) → 3(2)8(1) → 3(1)8(1)

Мы получили итоговую строку, теперь нужно выполнить преобразование для получение ответа. Т.к. в строке всего две цифры, то первую нужно возвести в значение второй: 38 = 6561

Ответ: 6561

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

Задача 7#6281

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите число, полученное при умножении на 42 числа, являющегося результатом применения приведённой выше программы к строке 44 ...44 66...66 00...00 .
◟--◝◜--◞ ◟-◝ ◜-◞ ◟--◝◜--◞
   345     647      948

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

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

Изначально была строка 4(345)6(647)0(948).  Самое приоритетное действие в цикле ПОКА – это замена 4 на 66. На протяжении всей работы программы оно будет выполняться до тех пор, пока четверок не останется вообще. Для текущей же строки все четверки заменятся парами шестерок, которых будет в 2 раза больше, чем изначальное количество четверок, т.е. 690.

4(345)6(647)0 (948) → 6(1337)0(948)

Второе по приоритету действие - это замена пары шестерок на одну шестерку. Это действие перестанет выполняться, когда количество шестерок станет 1.

6(1337)0(948) →  6(1)0(948)

Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной шестерки и какого-то количества нулей, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной четверки, двух шестерок или трех нулей не будет нарушено.

6  0    →  6   4  0    →  6   0    →  6  0     →  6  0
 (1) (948)    (1) (1) (945)    (3) (945)    (2) (945)    (1) (945)

Итак, из 6(1)0(948)   мы получили 6(1)0(945),  значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество нулей.

За один шаг количество уменьшилось на 3, значит нужно вычесть из 948 ближайшее к этому числу значение, кратное 3, т.е. 945.

6(1)0(948) → 6(1)0(3)

Теперь снова вручную прогоним полученную строку.

6(1)0(3) →  6(1)4(1) → 6(3) →  6(2) →  6(1)

Последним делом необходимо умножить 6 на 42: 6 ⋅ 42 = 252.

Ответ: 252

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

Задача 8#6282

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Какое число получится в результате применения приведенной выше программы к строке 99...99 11...11 55 ...55?
◟--◝◜-◞ ◟--◝◜--◞◟--◝◜--◞
  915      170      402

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

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

Изначально была строка 9(915)1(170)5(402).  Самое приоритетное действие в цикле ПОКА – это замена 9 на 11. На протяжении всей работы программы оно будет выполняться до тех пор, пока девяток не останется вообще. Для текущей же строки все девятки заменятся парами единиц, которых будет в 2 раза больше, чем изначальное количество девяток, т.е. 1830.

9(915)1(170)5 (402) → 1(2000)5(402)

Второе по приоритету действие - это замена пары единиц на одну единицу. Это действие перестанет выполняться, когда количество единиц станет 1.

1(2000)5(402) →  1(1)5(402)

Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной единицы и какого-то количества пятерок, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной девятки, двух единиц или трех пятерок не будет нарушено.

1  5    →  1   9  5    →  1   5    →  1  5     →  1  5
 (1) (402)    (1) (1) (399)    (3) (399)    (2) (399)    (1) (399)

Итак, из 1(1)5(402)   мы получили 1(1)5(399),  значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество пятерок.

За один шаг количество уменьшилось на 3, значит нужно вычесть из 402 ближайшее к этому числу значение, кратное 3, т.е. 399.

1(1)5(399) → 1(1)5(3)

Теперь снова вручную прогоним полученную строку.

1(1)5(3) →  1(1)9(1) → 1(3) →  1(2) →  1(1)

Ответ: 1

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

Задача 9#6283

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите сумму цифр строки, полученной в результате применения приведённой выше программы к строке 99 ...9911 ...11 55...55
◟--◝◜--◞◟--◝◜--◞ ◟-◝ ◜-◞
   423      762     980

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

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

Изначально была строка 9(423)1(762)5(980).  Самое приоритетное действие в цикле ПОКА – это замена 9 на 11. На протяжении всей работы программы оно будет выполняться до тех пор, пока девяток не останется вообще. Для текущей же строки все девятки заменятся парами единиц, которых будет в 2 раза больше, чем изначальное количество девяток, т.е. 846.

9(423)1(762)5 (980) → 1(1608)5(980)

Второе по приоритету действие - это замена пары единиц на одну единицу. Это действие перестанет выполняться, когда количество единиц станет 1.

1(1608)5(980) →  1(1)5(980)

Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной единицы и какого-то количества пятерок, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной девятки, двух единиц или трех пятерок не будет нарушено.

1  5    →  1   9  5    →  1   5    →  1  5     →  1  5
 (1) (980)    (1) (1) (977)    (3) (977)    (2) (977)    (1) (977)

Итак, из 1(1)5(980)   мы получили 1(1)5(977),  значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество пятерок.

За один шаг количество уменьшилось на 3, значит нужно вычесть из 980 ближайшее к этому числу значение, кратное 3, т.е. 975.

1(1)5(980) → 1(1)5(5)

Теперь снова вручную прогоним полученную строку.

1(1)5(5) →  1(1)9(1)5(2) → 1(3)5 (2) → 1(2)5(2) → 1(1)5(2)

Сумма цифр равна 1 + 5 + 5 = 11

Ответ: 11

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

Задача 10#6284

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

КОНЕЦ ЕСЛИ

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

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

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

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

Изначально была строка 5(50)4(50)2(50)7(50).  До исчезновения всех пятерок программа будет за 1 итерацию заменять первую встреченную пару пятерок на одну семерку и уменьшать количество четверок на одну. За 25 итераций получится следующая строка:

7(25)4(25)2(50)7(50)

Далее действия, которые происходили с пятерками, произойдут и с двойками. В результате за следующие 24 итераций получится следующая строка:

7(25)4(1)7(24)2(2)7(50)

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

7(25)4(1)7(24)2(2)7(50) → 7(24)4(1)7 (25)7 (50)

Таким образом, количество оставшихся семерок равно 99.

Ответ: 99

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

Задача 11#6285

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Определите количество преобладающих цифр в строке, полученной в результате применения приведённой выше программы к строке: 5◟5-.◝.◜.55◞7◟7-.◝.◜.77◞.
   35      100

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

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

Изначально была строка 5(35)7(100).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех семерок, таким образом после выполнения этого цикла строка будет состоять из 135 пятерок.

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

5    →  7   5
 (135)    (67) (1)

После этого все семерки заменятся шестерками и программа завершит свою работу. В полученной строке 67 шестерок, их больше чем пятерок, значит ответ 67.

Ответ: 67

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

Задача 12#6286

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Определите количество преобладающих цифр в строке, полученной в результате применения приведённой выше программы к строке: 3◟3-.◝.◜.33◞9◟9-.◝.◜.99◞.
   49      54

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

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

Изначально была строка 3(49)9(54).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех девяток, таким образом после выполнения этого цикла строка будет состоять из 103 троек.

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

3    →  9   3
 (103)    (51) (1)

После этого все девятки заменятся нулями и программа завершит свою работу. В полученной строке 51 ноль.

Ответ: 51

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

Задача 13#6287

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите сумму цифр в строке, полученной в результате применения приведённой выше программы к строке: 3◟3..◝.◜33◞9◟9-.◝.◜.99◞.
   93      312

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

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

Изначально была строка 3(93)9(312).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех девяток, таким образом после выполнения этого цикла строка будет состоять из 405 троек.

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

3    →  9    3
 (405)    (202) (1)

После этого все девятки заменятся нулями и программа завершит свою работу. В полученной строке 202 нуля. В полученной строке 78 нулей и 1 тройка, сумма цифр равна 3.

Ответ: 3

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

Задача 14#6288

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Сколько нулей содержится в строке, полученной в результате применения приведённой выше программы к строке: 1◟1-.◝.◜.11◞2◟2-.◝.◜.22◞?
   56      31

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

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

Изначально была строка 1(49)2(54).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех двоек, таким образом после выполнения этого цикла строка будет состоять из 87 единиц.

Далее все единицы кроме последней исчезнут, а на их месте появятся двойки.

1   →  2   1
 (87)    (43)(1)

После этого все двойки заменятся нулями и программа завершит свою работу. В полученной строке 43 нуля.

Ответ: 43

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

Задача 15#6289

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите количество цифр в строке, полученной в результате применения приведённой выше программы к строке: 1◟1-.◝.◜.11◞2◟2-.◝.◜.22◞ .
   83       17  Ответ запишите в двоичной системе счисления.

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

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

Изначально была строка 1(83)2(17).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех двоек, таким образом после выполнения этого цикла строка будет состоять из 100 единиц.

Далее все единицы исчезнут, а на их месте появятся двойки.

1    →  2
 (100)    (50)

После этого все двойки заменятся нулями и программа завершит свою работу. В полученной строке 50 нулей. Переведем 50 в двоичную СС: 5010 = 1100102

Ответ: 110010

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

Задача 16#6386

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 5000 идущих подряд цифр 8?

НАЧАЛО

Пока нашлось (888888888 )

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

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

ИНАЧЕ

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

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

КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

Если в строке достаточно число восьмерок, то после того как тело цикла будет выполнено семь раз, первые 56 восьмерок заменятся на семь семерок. При следующем выполнении цикла после первой команды эти семь семерок заменятся на одну восьмерку, после чего процесс будет продолжаться: 56 восьмерок заменятся на семь семерок, а семь семерок – на одну восьмерку. Становится ясно, что цикл преобразует пятьдесят шесть восьмерок в одну восьмерку. Подберем, ближайшее к 5000 число, делящееся на 56, это будет число 4984. После того как цикл повторится 89 раз, у нас станет 4984 ∕56 = 89  пятерок и оставшиеся 5000 − 4984 =  16  пятерок, в общей сумме 89 + 16 = 105  восьмерок. 56  из них заменятся на одну восьмерку, получится 105 −  56 + 1 = 50  восьмерок, затем     40  восьмерок заменятся на пять семерок и получится строка 777778888888888  , затем восемь восьмерок заменятся на семерку, получится строка 77777788. Так как в этой строке недостаточно восьмерок, условие цикла не выполнится, а выполнение программы на этом завершится.

Ответ: 77777788

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

Задача 17#6397

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

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

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

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

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

НАЧАЛО

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Какая строка получится в результате применения приведённой выше программы к строке 44...44 66...66 00 ...00?
◟--◝◜-◞ ◟--◝◜--◞◟--◝◜--◞
  763      153      690

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

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

Изначально была строка 4(763)6(153)0(690).  Самое приоритетное действие в цикле ПОКА – это замена 4 на 66. На протяжении всей работы программы оно будет выполняться до тех пор, пока четверок не останется вообще. Для текущей же строки все четверки заменятся парами шестерок, которых будет в 2 раза больше, чем изначальное количество четверок, т.е. 1526.

4(763)6(153)0 (690) → 6(1679)0(690)

Второе по приоритету действие - это замена пары шестерок на одну шестерку. Это действие перестанет выполняться, когда количество шестерок станет 1.

6(1679)0(690) →  6(1)0(690)

Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной шестерки и какого-то количества нулей, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной четверки, двух шестерок или трех нулей не будет нарушено.

6  0    →  6   4  0    →  6   0    →  6  0     →  6  0
 (1) (690)    (1) (1) (687)    (3) (687)    (2) (687)    (1) (687)

Итак, из 6(1)0(690)   мы получили 6(1)0(687),  значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество нулей.

За один шаг количество уменьшилось на 3, значит нужно вычесть из 690 ближайшее к этому числу значение, кратное 3, т.е. 687.

6(1)0(690) → 6(1)0(3)

Теперь снова вручную прогоним полученную строку.

6(1)0(3) →  6(1)4(1) → 6(3) →  6(2) →  6(1)

Таким образом, в конце выполнения программа будет выведено 6.

Ответ: 6

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

Задача 18#6398

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

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

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

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

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

НАЧАЛО

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

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

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

КОНЕЦ ПОКА

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Найдите произведение количества тех цифр, которых больше всего, и значения тех цифр, которых меньше всего в строке, полученной в результате применения приведённой выше программы к строке: 7◟7..◝.◜77◞ 9◟9..◝.◜99◞.
  367      34  Так, если бы программа вывела 60 пятерок и 10 четверок, то ответом было число 60 ⋅ 4 = 240.

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

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

Изначально была строка 7(367)9(34).  Цикл ПОКА внутри основного цикла ПОКА будет работать до момента исчезновения всех девяток, таким образом после выполнения этого цикла строка будет состоять из 401 семерки.

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

7    →  9    7
 (401)    (200) (1)

После этого все девятки заменятся восьмерками и программа завершит свою работу. В полученной строке 200 восьмерок и 1 семерка. Больше всего восьмерок, меньше – семерок, ответ 200 ⋅ 7 = 1400.

Ответ: 1400

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

Задача 19#6830

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 81 идущей подряд цифры 5?

НАЧАЛО

Пока нашлось (55555)

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

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

ИНАЧЕ

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

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

КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

Если в строке достаточно число пятерок, то после того как тело цикла будет выполнено три раза, первые двенадцать пятерок заменятся на три двойки. При следующем выполнении цикла после первой команды эти три двойки заменятся на одну пятерку, после чего процесс будет продолжаться: двенадцать пятерок заменятся на три двойки, а три двойки – на одну пятерку. Становится ясно, что цикл преобразует двенадцать пятерок в одну пятерку. После того как цикл повторяется 6 раз, у нас станет 72∕12 =  7  пятерок и оставшиеся 81 − 72 =  9  пятерок, в общей сумме 7 + 9 = 16  пятерок. Двенадцать из них заменятся на три двойки, получится строка 2225555  . Так как в этой строке нет пяти пятерок, условие цикла не выполнится, а выполнение программы на этом завершится.

Ответ: 2225555

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

Задача 20#6831

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

команда1

КОНЕЦ ЕСЛИ

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

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

ЕСЛИ условие

команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 150 идущих подряд цифр 4?

НАЧАЛО

Пока нашлось (44444)

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

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

ИНАЧЕ

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

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

КОНЕЦ ПОКА

КОНЕЦ

В ответе запишите полученную строку.

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

Если в строке достаточно число четверок, то после того как тело цикла будет выполнено восемь раз, первые 32 четверки заменятся на шестнадцать двоек. При следующем выполнении цикла после первой команды эти шестнадцать двоек заменятся на четыре двойки, а четыре двойки заменятся на одну двойку после чего процесс будет продолжаться: 32 четверки заменятся на шестнадцать двоек, шестнадцать двоек на четыре двойки, затем четыре двойки заменятся на одну двойку. Становится ясно, что цикл преобразует тридцать две четверки в одну двойку. После того как цикл повторяется 4 раза, у нас станет 128∕32 =  4  двойки, которые заменятся на одну двойку 4∕4 = 1  и оставшиеся 150 − 128 =  22  четверки, затем шестнадцать четверок заменятся на восемь двоек, станет 8 + 1 = 9  двоек и 22 − 16 = 6  четверок, затем 8 двоек, преобразуются в две двойки, получится строка 222444444, после этого четыре четверки преобразуются в две двойки и получится строка 2222244. Так как в этой строке нет пяти четверок, условие цикла не выполнится, а выполнение программы на этом завершится.

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