Задание 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:]).