К содержанию

Подтема 6 из 7

Длинные формулировки

Как разобрать условие, где величина собрана из нескольких действий: квадрат минимума, остаток минимального, два наибольших в тройке.

Порядок действий

Чем «квадрат минимального элемента» отличается от «минимального квадрата элемента»?

Формулировку читают как цепочку действий: «квадрат минимума» — сначала минимум, потом квадрат; «минимум квадратов» — наоборот. Для чисел −20, −3, 8 получаются совсем разные числа:

Одни и те же два действия в разном порядке. В квадрате −20 становится самым большим числом 400, поэтому минимум квадратов — 9.

То же в программе:

a = [-20, -3, 8]print(min(a) ** 2, min([x ** 2 for x in a]))
400 9

Выбери формулировку, чтобы увидеть выражение:

квадрат минимального элемента
min(a) ** 2
минимальный квадрат элемента
min([x ** 2 for x in a])
модуль максимальной суммы
abs(max(sums))
максимальный модуль суммы
max([abs(s) for s in sums])
квадрат количества элементов
len(a) ** 2

Если бы в задаче темы было «сумма тройки не больше квадрата максимального элемента, оканчивающегося на 25», порог стал бы max(ends) ** 2, а остальное решение не изменилось бы.

Проверка и ответ

Что выводить, если проверяют одно, а в ответе спрашивают другое?

Группу отбирают по одной величине, а в список кладут ту, что спрашивают в ответе. Пусть в задаче темы просят не наибольшую сумму, а наибольшее произведение чисел подходящей тройки. Проверка остаётся прежней — по сумме, а в список идёт произведение:

def four(x):    return 1000 <= abs(x) <= 9999  a = [125, 1300, -1250, -2100, 7, -325, 2025, 3000]results = []for i in range(len(a) - 2):    x, y, z = a[i], a[i + 1], a[i + 2]    k = int(four(x)) + int(four(y)) + int(four(z))    if k <= 2 and x + y + z <= 2025:        results.append(x * y * z)print(len(results), max(results))
4 18375000

Подходят те же четыре тройки, а наибольшее произведение даёт тройка −1250, −2100, 7. Перед тем как писать программу, выпиши три вещи: по какому условию отбирают группы, какую величину кладут в список и что с ней сделать в ответе — максимум, минимум или модуль.

Остаток минимального

Что значит «остаток от деления хотя бы одного элемента на 111 равен минимальному элементу последовательности»?

Остаток элемента сравнивают с самим минимумом: x % 111 == m, где m = min(a) найден до цикла. Похожие слова дают другие проверки:

ФормулировкаПроверка
остаток x равен минимальному элементуx % d == m
остаток x равен остатку минимального элементаx % d == m % d

«Остаток минимального» и «минимальный остаток» тоже различаются. Для чисел 8 и 12 минимальный элемент 8 даёт при делении на 5 остаток 3, а остатки чисел — 3 и 2, и наименьший из них 2:

a = [8, 12]print(min(a) % 5, min([x % 5 for x in a]))
3 2

Наибольшие в тройке

Как найти сумму двух наибольших чисел тройки или её среднее по величине число?

Сумма двух наибольших — сумма тройки без наименьшего: sum(t) - min(t). А чтобы найти среднее по величине число, тройку сортируют: .

t = [4, 10, 7]s = sorted(t)print(sum(t) - min(t), s, s[1])
17 [4, 7, 10] 7

sorted создаёт новый список из трёх чисел. Исходный список a не меняется, и соседи в нём остаются на своих местах.

«Сумма квадратов двух наибольших чисел» — сначала выбрать числа, потом возвести в квадрат. Для −10, 3, 4 это 3² + 4² = 25, а не 100 + 16: −10 — наименьшее число, хотя его квадрат самый большой.

произведение минимума и максимума тройки
min(t) * max(t)
сумма модулей минимума и максимума
abs(min(t)) + abs(max(t))для −9 и 5: 9 + 5 = 14
модуль суммы минимума и максимума
abs(min(t) + max(t))для −9 и 5: |−4| = 4

Итого

  • Порядок словпорядок действий: «квадрат минимума» — min(a) ** 2
  • Модультолько у того, у чего назван: abs(max(sums))
  • Проверка и ответв список кладут величину из ответа
  • Остаток и минимум«равен минимальному» — x % d == m, «остатку минимального» — x % d == m % d
  • Два наибольшихsum(t) - min(t)
  • Порядок в тройкеsorted(t), исходный список не меняется

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Для чисел 5, −7, 2 найди квадрат минимального элемента и минимальный квадрат элемента.
ОтветСкрыть ответ
Ответ
49 и 4: минимум −7, его квадрат 49; квадраты 25, 49, 4.
Вопрос 2
Суммы подходящих троек: −15, −40, 10. Найди модуль максимальной суммы и максимальный модуль суммы.
ОтветСкрыть ответ
Ответ
10 и 40: максимум сумм 10, а модули 15, 40, 10.
Вопрос 3
Для чисел 13, 22, 9 найди остаток от деления на 5 минимального элемента и минимальный из остатков.
ОтветСкрыть ответ
Ответ
4 и 2: минимальный элемент 9, 9 % 5 = 4; остатки 3, 2, 4.
Вопрос 4
Для тройки 7, −2, 5 найди сумму двух наибольших чисел и среднее по величине число.
ОтветСкрыть ответ
Ответ
12 и 5: два наибольших — 7 и 5; после сортировки −2, 5, 7.
Вопрос 5
В задаче темы просят записать количество троек, затем минимальную из сумм. Что изменится в программе и что получится на восьми числах?
ОтветСкрыть ответ
Ответ
Только вывод: print(len(sums), min(sums)). На восьми числах — 4 −3343.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Квадрат минимума и минимум квадратов

Для чисел 5, −7, 2 найди квадрат минимального элемента и минимальный квадрат элемента.

Введите через пробел квадрат минимального элемента, затем минимальный квадрат.

Модуль максимума и максимум модулей

Суммы подходящих групп равны −15, −40, 10. Найди модуль максимальной суммы и максимальный модуль суммы.

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

Квадрат минимума на 1

Последовательность −31, 6, 21, −4, 11. Найди минимальный элемент, оканчивающийся на 1. Затем найди соседние пары, в которых ровно одно число оканчивается на 1, а сумма квадратов меньше квадрата найденного минимума. Найди количество таких пар и максимальную сумму квадратов.

Введите через пробел количество пар, затем максимальную сумму квадратов.

Проверяем сумму, выводим квадраты

Последовательность 3, −1, 6, 2. Среди соседних пар с суммой больше 4 найди количество и минимальную сумму квадратов.

Введите через пробел количество пар, затем минимальную сумму квадратов.

Ровно одно отрицательное и порог

Для файла 17-3.txt определите количество пар, в которых ровно одно число отрицательное, а сумма пары больше максимального отрицательного трёхзначного элемента последовательности, кратного 7. В ответе запишите количество найденных пар, затем минимальную из сумм квадратов элементов таких пар. Под парой подразумевается два идущих подряд элемента.

17-3.txtПоследовательность целых чисел от −100 000 до 100 000Текстовый файл · 4,6 КБ

Введите через пробел количество пар, затем минимальную сумму квадратов.

Остаток минимального и минимальный остаток

Для чисел 13, 22, 9 найди остаток от деления на 5 минимального элемента и минимальный из остатков.

Введите через пробел остаток минимального элемента, затем минимальный остаток.

Остаток на 7 равен минимуму

Последовательность 30, 4, 17, 9. Найди количество соседних пар, в которых остаток от деления хотя бы одного числа на 7 равен минимальному элементу последовательности, и максимальную сумму таких пар.

Введите через пробел количество пар, затем максимальную сумму.

Остаток на 37 равен минимуму

В файле 17-2.txt содержится последовательность натуральных чисел. Определите количество пар, в которых остаток от деления хотя бы одного из элементов на 37 равен минимальному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. Под парой подразумевается два идущих подряд элемента.

17-2.txtПоследовательность натуральных чисел, не превышающих 100 000Текстовый файл · 4,2 КБ

Введите через пробел количество пар, затем максимальную сумму.

Два наибольших в тройке

Для тройки 7, −2, 5 найди сумму двух наибольших чисел, сумму квадратов двух наибольших чисел и средний по величине элемент.

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

Минимум и максимум тройки

Для тройки 3, −8, 4 найди сумму модулей минимума и максимума, модуль их суммы и их произведение.

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

Два наибольших против квадрата количества

В файле 17-3.txt содержится последовательность целых чисел от −100 000 до 100 000. Определите количество троек, в которых сумма двух наибольших чисел меньше квадрата количества всех элементов последовательности, модули которых являются четырёхзначными числами и оканчиваются на 13. В ответе запишите количество найденных троек, затем абсолютное значение максимальной из сумм элементов таких троек. Под тройкой подразумевается три идущих подряд элемента.

17-3.txtПоследовательность целых чисел от −100 000 до 100 000Текстовый файл · 4,6 КБ

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