← Все вопросы

Как решать задание 17 ЕГЭ по информатике (обработка чисел из файла)?

Задан 15 месяцев назад1.3к просмотров2 ответа
11

Задание 17 даёт файл с кучей целых чисел, и надо найти, например, количество пар с каким-то свойством и максимальную сумму. С чего начать чтение файла и как не запутаться в условиях? Как решать задание 17 на Python?

2 ответа

15
✓ Принятый ответ — помог автору

Задание 17 — обработка массива целых чисел из текстового файла. Классика: «найдите количество пар соседних элементов, удовлетворяющих условию, и максимальную сумму среди таких пар».

Шаблон решения:

with open('17.txt') as f:
    a = [int(x) for x in f]   # список всех чисел

count = 0
best = -10**18
for i in range(len(a) - 1):          # пары соседних
    x, y = a[i], a[i+1]
    if (x % 3 == 0 or y % 3 == 0):   # условие из задачи
        count += 1
        best = max(best, x + y)

print(count, best)

Ключевые моменты:

  • читай числа в список через int(x) for x in f;
  • «пары соседних» — это i и i+1, цикл до len(a)-1;
  • одновременно копи и количество, и максимум/минимум, что просят.

Бывают варианты: пары не соседних, а отстоящих на k; тройки; элементы, кратные минимальному/максимальному в массиве. Метод тот же — точно перенеси условие в if.

Частые ошибки:

  • начальное значение best: для максимума ставь очень маленькое число, для минимума — очень большое;
  • выйти за границу массива (len(a), а не len(a)-1 для пар) — будет ошибка индекса;
  • перепутать «соседних» и «любых двух».

Задание 17 — одно из самых выгодных: метод стандартный, главное — внимательность к условию.

5

Совет по инициализации: если ищешь максимальную сумму среди пар, которых может и не оказаться, начинай не с 0, а с заведомо маленького (-10**18) или с None и проверкой. Иначе для отрицательных чисел получишь неверный максимум, а 0 затешется ответом там, где подходящих пар нет.

И всегда выводи ровно то, что просят, в нужном порядке — обычно сначала количество, потом сумму, но перечитай условие.

Ваш ответ

Войдите, чтобы ответить на вопрос.