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

Дана программа для редактора:
НАЧАЛО
                ПОКА нашлось (01) ИЛИ нашлось (02)
                        заменить (02, 1110)
                        заменить (01, 220)
                КОНЕЦ ПОКА
КОНЕЦ

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

def Div(n):
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True

mini = 1000000
for x in range(100):
for y in range(100):
s = '0' + '1'* x + '2'* y
if len(s) > 40:
while ('01' in s) or ('02' in s):
s = s.replace('02','1110',1)
s = s.replace('01','220',1)
if Div(s.count('1') + s.count('2') * 2):
mini=min(mini,x + 2*y)
print(mini)

Ответ: 42.

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

from random import shuffle
h=[]
for i in range(40,60):
for k in range (0,i+1):
for j in range(0,50):
a = list('1'*(i-k)+'2'*k)
shuffle(a)
a = '0'+''.join(a)
c = sum([int(x) for x in a])
while ('01' in a) or ('02' in a):
a = a.replace('02','1110',1)
a = a.replace('01','220',1)
b = sum([int(x) for x in a])
p = []
for d in range(1,int(b**0.5)+1):
if b%d == 0:
p.append(d)
if d!=b//d:
p.append(b//d)
if len(p)==2:
h.append(c)
print(min(h))

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

def prostoe(n):
k = 2
while k**2 = 40 and prostoe(4*x + 3*y)]
print(min(a))

Приведем решение Дмитрия Альцева на языке Python.

from itertools import product
def f(a):
a = int(a)
for x in range(2, int(a**0.5)+1):
if a % x == 0:
return False
else:
return True
e = product('12',repeat = 39)
for w in e:
w = list(w)
w.insert(0, '0')
g = ''.join(w)
while ('01' in g) or ('02' in g):
g = g.replace('02','1110',1)
g = g.replace('01','220',1)
if f(g):
h = map(int,g)
h = sum(h)
break
break
print(h)
Правильный ответ: 42
📚 Похожие разобранные задания по предмету:
ID 31922 • Задание №13
В терминологии сетей TCP/⁠IP маска сети  — это двоичное число, меньшее 232; в маске сначала (в старших разряда...
Смотреть разбор ↗
ID 31838 • Задание №12
Символом F обозначено одно из указанных ниже логических выражений от трех аргументов: X, Y, Z. Дан фрагмент та...
Смотреть разбор ↗
🔗 Другие задания линии №12 по предмету Информатика:
ID 31602 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31603 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31604 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31605 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ... ID 31606 Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться ...
← Предыдущее задание 📚 Все задания по предмету Следующее задание →