Задание 12. Информатика. ЕГЭ. Шастин. 18.10.2024
- Просмотры: 197
- Изменено: 24 ноября 2024
(Л. Шастин) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки цифр.
А) заменить (v, w)
Эта команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\).
Б) нашлось (v)
Эта команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не меняется.
Дана программа для Редактора:
НАЧАЛО ПОКА нашлось (>3) ИЛИ нашлось(>2) ИЛИ нашлось(>0) ЕСЛИ нашлось (>3) ТО заменить (>3, 22>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>2) ТО заменить (>2, 2>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>0) ТО заменить (>0, 3>) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
На вход приведённой выше программе поступает строка, начинающаяся с символа «\(>\)», а затем содержащая \(17\) цифр «\(0\)», \(n\) цифр «\(3\)» и \(17\) цифр «\(2\)», расположенных в произвольном порядке.
Определите наименьшее возможно значение \(n\), при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, является квадратом какого-либо натурального числа.
Решение:
Python
def sum_digs(s):
return sum(int(x) for x in s if x != '>')
n = 1
while True:
s = '>' + '0' * 17 + '2' * 17 + '3' * n
while '>3' in s or '>2' in s or '>0' in s:
if '>3' in s:
s = s.replace('>3', '22>', 1)
if '>2' in s:
s = s.replace('>2', '2>', 1)
if '>0' in s:
s = s.replace('>0', '3>', 1)
x = sum_digs(s)
if (int(x**0.5))**2 == x:
print(n)
break
n += 1
Ответ: \(9\)