Задание 17 ЕГЭ по информатике: решайте с автопроверкой

В задании 17 дан файл с последовательностью целых чисел. Нужно найти пары или тройки идущих подряд элементов с заданным свойством, посчитать их и найти наибольшую или наименьшую сумму.

Решать задачи номера

Как решать программой

Прочитайте числа в список: nums = [int(x) for x in open("17.txt")]. Соседние пары перебирает zip(nums, nums[1:]), тройки zip(nums, nums[1:], nums[2:]).

Условия про последнюю цифру проверяйте через abs(a) % 10: у отрицательного числа в Python остаток от деления на 10 неотрицательный, и без abs проверка ошибётся. Условие «ровно один элемент» записывается как сравнение двух логических значений через !=.

Среднее арифметическое и другие величины по всей последовательности посчитайте заранее, один раз. Затем соберите суммы подходящих пар в список и напечатайте его длину и максимум.

Чтобы не сравнивать дробные числа, можно умножить обе части неравенства на количество элементов: сумма пары, умноженная на n, не меньше суммы всех элементов. Так все вычисления остаются целыми.

Разбор примера

Последовательность 13, 20, −3, 7, 33, 40. Пары, где ровно один элемент оканчивается на 3, а сумма не меньше среднего. Нужно количество и наибольшая сумма.

nums = [13, 20, -3, 7, 33, 40]
avg = sum(nums) / len(nums)

def ends3(v):
    return abs(v) % 10 == 3

sums = [a + b for a, b in zip(nums, nums[1:])
        if ends3(a) != ends3(b) and a + b >= avg]
print(len(sums), max(sums, default=0))

Программа печатает

3 73

Среднее арифметическое равно 110 / 6, примерно 18,3. Подходят пары (13, 20) с суммой 33, (7, 33) с суммой 40 и (33, 40) с суммой 73. Пара (20, −3) не подходит по сумме, а в паре (−3, 7) сумма 4.

Решить эту задачу

Задачи к заданию 17

  • Пары с одной тройкой на концеСредняяРешать
  • Нечётные пары с произведением на 9СредняяРешать
  • Тройки с двумя трёхзначнымиСредняяРешать
  • Разность пары кратна числу чётныхСредняяРешать
  • Пары с равными суммами цифрСредняяРешать
  • Положительные пары ниже среднегоСредняяРешать
  • Возрастающие тройки с суммой на 4СредняяРешать
  • Пары с одним четырёхзначнымСредняяРешать
  • Пары с нечётным числом единицСредняяРешать
  • Пары разных знаков с суммой на 11СредняяРешать
  • Пары с одним палиндромомСредняяРешать
  • Пары с большой суммой квадратовСредняяРешать
  • Пары разной чётности и последняя цифраСредняяРешать
  • Тройки-пики с цифрой минимумаСредняяРешать
  • Пары, где одно втрое больше другогоСредняяРешать

Бесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Вопросы и ответы

Почему −13 % 10 в Python равно 7?
Python округляет частное вниз, поэтому остаток неотрицательный. Для последней цифры берите abs(v) % 10.
Как прочитать файл с числами?
Списком: [int(x) for x in open("17.txt")]. Каждая строка файла станет одним числом.
Что такое «пара» в этом задании?
Два элемента, которые стоят рядом. Перебирайте их через zip(nums, nums[1:]).