Главная / ЕГЭ Информатика / Задание №12 / ID 31659
ID 31659 ЕГЭ Информатика Линия №12 СдамГИА ID: 55599 Анализ информационных моделей
✈️ TG ВК Следующая ⏭️
Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А)  заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б)  нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Дана программа для редактора:
НАЧАЛО
   ПОКА НЕ нашлось (00)
      заменить (02, 101)
      заменить (11, 2)
      заменить (12, 21)
      заменить (010, 00)
   КОНЕЦ ПОКА
КОНЕЦ

Известно, что исходная строка A содержала ровно два нуля  — на первом и на последнем месте, а также поровну единиц и двоек, при этом всего в строке A было более 140 цифр. После выполнения данной программы получилась строка B, сумма цифр которой оказалась простым числом. Какое наименьшее количество единиц могло быть в строке A?
💡 Пошаговый разбор и решение:
Заметим, что сумма цифр исходной строки будет на единицу больше суммы цифр полученной строки.

Приведём решение данной задачи на языке Python.

def is_prime(x):
for i in range(2, (x//2)+1):
if x % i == 0:
return False
return True
for i in range(69, 100):
r = i * 1 + i * 2 - 1
if is_prime(r):
print(i)
break

Ответ: 76.

Приведём решение Бориса Савельева на языке Python.

from random import shuffle
minA = 10**10
for i in range(142, 200, 2):
for j in range(0, 40):
s = list('1' * (i//2) + '2' * (i//2))
shuffle(s)
s = '0' + ''.join(s)+'0'
s1 = s.count('1')
while not '00' in s:
s = s.replace('02', '101', 1)
s = s.replace('11', '2', 1)
s = s.replace('12', '21', 1)
s = s.replace('010', '00', 1)
suma = s.count('1') + s.count('2') * 2
f = 0
for t in range(2, suma):
if suma % t == 0:
f = 1
break
if f == 0:
minA = min(minA, s1)
print(minA)
Правильный ответ: 76
📚 Похожие разобранные задания по предмету:
ID 30689 • Задание №7
Рисунок размером 4 × 5 дюймов отсканировали с разрешением 256 dpi и использованием 256 оттенков. Определите ра...
Смотреть разбор ↗
ID 34703 • Задание №27
Дана последовательность целых чисел. Расстояние между элементами последовательности  — это разность их порядко...
Смотреть разбор ↗
🔗 Другие задания линии №12 по предмету Информатика:
ID 31602 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31603 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31604 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31605 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31606 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
← Предыдущее задание 📚 Все задания по предмету Следующее задание →