Рассмотрим задание №12 демоверсии ЕГЭ по информатике 2023 года. Это задание повышенного уровня сложности, проверяющее умение исполнять алгоритм для конкретного исполнителя с фиксированным набором команд. Время выполнения – около шести минут.
Условие задачи
Программа для исполнителя «Редактор» получает на вход строку, начинающуюся с символа «>» и содержащую 39 нулей, n единиц и 39 двоек, расположенных в произвольном порядке. Необходимо определить наименьшее значение n (количество единиц в исходной строке), при котором сумма числовых значений цифр результирующей строки (после выполнения программы) является простым числом.
Решение задачи
Задача требует определить наименьшее количество единиц в исходной строке, при котором сумма цифр результирующей строки – простое число. Решение использует цикл for.
for i in range(0, 50): # Перебираем возможные значения n от 0 до 49
s = ">" + "0"*39 + "1"*i + "2"*39 # Создаем исходную строку
while "1>" in s or "2>" in s or "0>" in s: # Цикл замены символов
s = s.replace("1>", "22>", 1) # Заменяем "1>" на "22>"
s = s.replace("2>", "2>", 1) # Заменяем "2>" на "2>"
s = s.replace("0>", "1>", 1) # Заменяем "0>" на "1>"
summa = sum(int(c) for c in s if c != '>') # Сумма числовых значений, без ">"
if is_prime(summa): # Проверка на простоту
print(i)
break # Выводим наименьшее n и завершаем цикл
def is_prime(a): # Функция проверки на простоту
if a < 2:
return False
for i in range(2, a):
if a % i == 0:
return False
return True
Код перебирает значения n от 0 до 49. Для каждого значения создаётся исходная строка, выполняется алгоритм замены, вычисляется сумма цифр и проверяется на простоту функцией is_prime. Наименьшее подходящее n выводится на экран.
Функция is_prime проверяет, является ли число простым, перебирая делители от 2 до a-1.
Решение использует итеративный перебор значений n. Функция проверки на простоту улучшает читаемость кода. Несмотря на длину кода, решение логично и понятно.