Найти в Дзене

Разбор задачи 17504 #kege по информатике #ЕГЭ17 номера

Оглавление

Уровень: Средний

Условие задачи:

Определите количество троек элементов последовательности, в которых не более одного из трёх элементов являются одновременно четырёхзначными и чётными числами. А сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 3 в девятеричной системе счисления.

В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек.

В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Теоретическая справка:

В данной задаче полезно заметить, что найти число оканчивающееся на 3 в девятеричной системе счисления можно банальным делением, так как последняя цифра троичной записи будет являться первым остатком: x % 9 == 3.

Код решения:

Ответ: 6281 99699
Ответ: 6281 99699

Комментарии к коду:

  1. M = [int(x) for x in open('17.txt')]
    Читаем данные из файла '17.txt', преобразуем каждую строку в целое число и создаем список M.
  2. A = [x for x in M if len(str(abs(x))) == 4 and abs(x) % 2 == 0]
    Создаем список A из чисел из M, которые имеют ровно 4 цифры и являются четными.
  3. B = max([x for x in M if x % 9 == 3])
    Находим максимальное значение среди чисел из M, которые при делении на 9 дают остаток 3, и сохраняем его в B.
  4. R = []
    Инициализируем пустой список R для хранения результатов сумм, удовлетворяющих условиям.
  5. for i in range(len(M) - 2):
    Проходим по списку M, используя индексы от 0 до (длина M - 3), чтобы избежать выхода за пределы при обращении к элементам M[i+2].
  6. x, y, z = M[i], M[i + 1], M[i + 2]
    Выбираем три последовательных элемента списка M.
  7. if (x in A) + (y in A) + (z in A) <= 1:
    Проверяем условие, что среди трех выбранных чисел не более одного числа принадлежит списку A.
  8. if (x + y + z) <= B:
    Проверяем условие, что сумма трех выбранных чисел меньше или равна значению B.
  9. R.append(x + y + z)
    Если оба условия выполняются, добавляем сумму (x+y+z) в список R.
  10. print(len(R), max(R))
    Выводим количество элементов в списке R и максимальное значение в списке R.

Информатика ЕГЭ | itpy 🧑‍💻

Поддержать автора донатом 💵