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

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

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

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

Укажите максимальное число \(R,\) которое может быть результатом работы данного алгоритма и в котором все цифры десятичной записи идут в порядке убывания.

Решение:

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:
        even.sort(reverse=True)
        odd.sort()
        n1 = sum(a * 10**b for a, b in zip(even, range(len(even) - 1, -1, -1)))
        n2 = sum(a * 10**b for a, b in zip(odd, range(len(odd) - 1, -1, -1)))
        return n1 + n2

mx_R = 0
for n in range(1000, 10000):
    t = R(n)
    if t != -1:
        s = str(t)
        if all(x > y for x, y in zip(s, s[1:])):
            mx_R = max(mx_R, t)
print(mx_R)

Ответ: \(875\)