Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 2302)
заменить (02, 10)
заменить (03, 201)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 40 единиц, 10 двоек и 8 троек. Сколько единиц было в исходной строке?
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 2302)
заменить (02, 10)
заменить (03, 201)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 40 единиц, 10 двоек и 8 троек. Сколько единиц было в исходной строке?
💡 Пошаговый разбор и решение:
Заметим, что порядок цифр в исходной строке не важен. Из строки 01 сначала получается строка 2302, а потом получается строка 2310. Строка 02 преобразуется в строку 10. Строка 03 сначала преобразуется в строку 201, затем преобразуется в строку 22302, после чего получается строка 22310.
Заметим, что после преобразования исходной строки получилась строка, содержащая 8 троек. Если в исходной строке было 8 единиц, тогда в получившейся строке будет 8 троек и 8 двоек, что не подходит, поскольку двоек должно быть 10. Если в исходной строка было 7 единиц, тогда в получившейся строке будет 7 троек и 7 двоек, этот вариант тоже не подходит, поскольку при добавлении в исходную строку троек в получившейся в результате преобразований строке будет только 9 двоек. Если в исходной строке было 6 единиц, то после преобразования получится шесть единиц, шесть двоек и шесть троек. Далее, добавим к исходной строке две тройки. Тогда после преобразования строки, состоящей из нуля, шести единиц и двух троек получится строка, состоящая из восьми единиц, десяти двоек и восьми троек. Остальные цифры в исходной строке — двойки.
Таким образом, в исходной строке было шесть единиц.
Ответ: 6.
Приведём другое решение на языке Python.
for k1 in range(50):
for k2 in range(50):
for k3 in range(50):
s='0'+k1*'1'+k2*'2'+k3*'3'
while '01' in s or '02' in s or '03' in s:
s=s.replace('01','2302',1)
s=s.replace('02','10',1)
s=s.replace('03','201',1)
if s.count('1')==40 and s.count('2')==10 and s.count('3')==8:
print (k1)
Заметим, что после преобразования исходной строки получилась строка, содержащая 8 троек. Если в исходной строке было 8 единиц, тогда в получившейся строке будет 8 троек и 8 двоек, что не подходит, поскольку двоек должно быть 10. Если в исходной строка было 7 единиц, тогда в получившейся строке будет 7 троек и 7 двоек, этот вариант тоже не подходит, поскольку при добавлении в исходную строку троек в получившейся в результате преобразований строке будет только 9 двоек. Если в исходной строке было 6 единиц, то после преобразования получится шесть единиц, шесть двоек и шесть троек. Далее, добавим к исходной строке две тройки. Тогда после преобразования строки, состоящей из нуля, шести единиц и двух троек получится строка, состоящая из восьми единиц, десяти двоек и восьми троек. Остальные цифры в исходной строке — двойки.
Таким образом, в исходной строке было шесть единиц.
Ответ: 6.
Приведём другое решение на языке Python.
for k1 in range(50):
for k2 in range(50):
for k3 in range(50):
s='0'+k1*'1'+k2*'2'+k3*'3'
while '01' in s or '02' in s or '03' in s:
s=s.replace('01','2302',1)
s=s.replace('02','10',1)
s=s.replace('03','201',1)
if s.count('1')==40 and s.count('2')==10 and s.count('3')==8:
print (k1)
Правильный ответ:
6
📚 Похожие разобранные задания по предмету:
ID 31815 • Задание №12
Дан фрагмент таблицы истинности выражения F:
x1
x2
x3
x4
x5
x6
x7
x8
F
0
1
0
1
1
1
1
0
0
1
0
1
0
1
1
0
1
1
...
ID 34789 • Задание №27
По каналу связи передаются положительные целые числа, не превышающие 1000, — результаты измерений, полученных...
🔗 Другие задания линии №12 по предмету Информатика:
ID 31602
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
ID 31603
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
ID 31604
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
ID 31605
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
ID 31606
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...