Задание 5. Информатика. ЕГЭ. Поляков-7650

Просмотры: 287
Изменено: 21 февраля 2025

*(Н. Сафронов) На вход алгоритма подаётся натуральное четырехзначное число \(N,\) в десятичной записи которого есть как чётные, так и нечётные цифры (к другим числам алгоритм неприменим). Алгоритм строит по нему новое число \(R\) следующим образом:

  1. Если в числе \(N\) четных чисел больше, то вычисляется сумма всех четных цифр числа \(N,\) иначе вычисляется сумма всех нечетных цифр числа \(N.\)
  2. Если на предыдущем шаге получилось четное число, то к нему справа приписывается максимальная четная цифра числа \(N,\) иначе слева приписывается минимальная нечетная цифра числа \(N.\)

Сколько существует чисел \(N,\) для которых результат работы автомата \(R\) равен \(111?\)

Решение:

Python


def R(N):
    x = N
    odd = []
    even = []
    while N:
        r = N % 10
        if r % 2:
            odd.append(r)
        else:
            even.append(r)
        N //= 10
    if len(odd) == 0 or len(even) == 0:
        return -1
    else:
        if len(even) > len(odd):
            x = sum(even)
        else:
            x = sum(odd)
        if x % 2 == 0:
            s = str(x) + str(max(even))
        else:
            s = str(min(odd)) + str(x)
        return int(s)

N = 0
for n in range(1000, 10_000):
    N += int(R(n) == 111)

print(N)

Ответ: \(228\)