К содержанию

Подтема 4 из 6

Две группы чисел

Повторяющиеся и одиночные числа: их суммы и средние — и ответ задачи темы.

Две группы

Решим задачу темы целиком. Структура подходит у строк 1, 2, 5 и 6 — осталось сравнить среднее неповторяющихся с суммой повторяющихся.

Числа строки делят на две группы — неповторяющиеся (частота 1) и повторяющиеся (частота больше 1) — и сравнивают их суммы, количества или средние.

СтрокаНеповторяющиесяПараO > 4P
15, 7, 9, 11 — сумма 322, 2 — сумма 432 > 16, да
21, 3, 7, 9 — сумма 205, 5 — сумма 1020 > 40, нет
54, 5, 7, 8 — сумма 243, 3 — сумма 624 > 24, нет
620, 22, 24, 26 — сумма 927, 7 — сумма 1492 > 56, да

Подходят первая и шестая строки — ответ задачи темы 2. Заметь: у четвёртой строки 2, 2, 2, 7, 9, 11 сравнение тоже выполнено (27 > 24), но структура не та — поэтому сначала проверяют структуру.

Суммы групп

В таблице сумму группы складывает СУММЕСЛИ по полосе частот, в Python группы собирают в два списка.

Таблица

проверяет условие в одном диапазоне и складывает числа из другого: =СУММЕСЛИ(G1:L1;1;A1:F1) — посмотреть частоты в G1:L1, выбрать позиции с частотой 1 и сложить числа на этих позициях из A1:F1. Условие ">1" в кавычках выбирает повторяющиеся:

G1=СЧЁТЕСЛИ($A1:$F1;A1)
M1=СУММЕСЛИ(G1:L1;1;A1:F1)
N1=СУММЕСЛИ(G1:L1;">1";A1:F1)
O1=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;2)=2;СЧЁТЕСЛИ(G1:L1;1)=4;M1>4*N1);1;0)

Отметка в O соединяет структуру и сравнение. Формулы протягивают вниз и складывают отметки:

O1=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;2)=2;СЧЁТЕСЛИ(G1:L1;1)=4;M1>4*N1);1;0)
ABCDEFGHIJKLMNO
122579112211113241
255137922111120100
3225591122221120140
422279113331112760
53345782211112460
6772022242622111192141
72
Формулы в ячейках
  • G1скопирована до L6=СЧЁТЕСЛИ($A1:$F1;A1)
  • M1скопирована до M6=СУММЕСЛИ(G1:L1;1;A1:F1)
  • N1скопирована до N6=СУММЕСЛИ(G1:L1;">1";A1:F1)
  • O1скопирована до O6=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;2)=2;СЧЁТЕСЛИ(G1:L1;1)=4;M1>4*N1);1;0)
  • O7=СУММ(O1:O6)

Таблица широкая — прокрути её вправо. Поменяй 8 в пятой строке на 9 — сумма одиночных станет 25 > 24, и строка начнёт подходить.

Python

Пустой список — [], .append(x) в конец. Пройди по шагам, куда попадает каждое число первой строки:

a = [2, 2, 5, 7, 9, 11]single = []repeated = []for x in a:    if a.count(x) == 1:        single.append(x)    else:        repeated.append(x)print(single, repeated)
[5, 7, 9, 11] [2, 2]

В else («иначе») попадают числа с частотой больше 1: частота числа из строки не бывает нулевой. Короче те же списки собирает . Структуру удобно проверить по длинам групп: в строке из шести чисел одна пара и четыре одиночных — это ровно 4 неповторяющихся и 2 повторяющихся.

answer = 0with open("9.txt") as f:    for line in f:        a = [int(part) for part in line.split()]        single = [x for x in a if a.count(x) == 1]        repeated = [x for x in a if a.count(x) > 1]        if len(single) == 4 and len(repeated) == 2:            if sum(single) > 4 * sum(repeated):                answer += 1print(answer)
2

Два вложенных if проверяют условия по очереди: сначала структуру, потом сравнение. Такую программу проще проверить по частям, чем одно длинное условие.

Средние групп

Средние двух групп сравнивают произведениями: сумма одной группы на количество чисел другой. В строке 2, 2, 5, 5, 5, 9 одно неповторяющееся число (сумма 9) и пять повторяющихся (сумма 19): 9 · 5 = 45 > 19 · 1 = 19 — среднее неповторяющихся больше.

Количество чисел группы в таблице даёт =СЧЁТЕСЛИ(G1:L1;1) или =СЧЁТЕСЛИ(G1:L1;">1"), в Python — списка:

a = [2, 2, 5, 5, 5, 9]single = [x for x in a if a.count(x) == 1]repeated = [x for x in a if a.count(x) > 1]print(sum(single) * len(repeated), sum(repeated) * len(single))
45 19

Сначала проверяют структуру, потом средние и наибольшие числа групп: структура гарантирует, что обе группы непустые. У пустого списка нет ни среднего, ни максимума — max([]) остановит программу ошибкой, а в таблице деление на ноль даст #ДЕЛ/0!.

Тонкости:повторяющиеся без учёта повторений

«Сумма повторяющихся чисел без учёта повторений» берёт каждое значение один раз: для 2, 2, 5, 5, 5 это 2 + 5 = 7, а с учётом всех появлений — 19. В Python такую сумму даёт множество группы.

repeated = [2, 2, 5, 5, 5]print(sum(repeated), sum(set(repeated)))
19 7

Делить сумму повторяющихся на 2 можно, только если каждое значение встречается ровно дважды: 4, 4, 7, 7 → 22 / 2 = 11. Для 4, 4, 7, 7, 7 это уже неверно.

Чётные и нечётные

В строке 1, 3, 5, 20, 30 нечётных чисел больше, чем чётных. А чья сумма больше?

Чётные и нечётные числа — тоже две группы: их делят по остатку от деления на 2. Чётное число делится на 2 без остатка. Количество и сумма группы — независимые условия: нечётных три, но их сумма 9 меньше суммы чётных 50.

Таблица

даёт остаток. Полоса остатков в G1:L1 работает как полоса частот: СЧЁТЕСЛИ считает чётные, СУММЕСЛИ складывает их:

G1=ОСТАТ(A1;2)
=СЧЁТЕСЛИ(G1:L1;0)
=СУММЕСЛИ(G1:L1;0;A1:F1)
Python

Остаток в Python — : x % 2 == 0 — чётное, x % 2 != 0 — нечётное.

a = [1, 3, 5, 20, 30]even = [x for x in a if x % 2 == 0]odd = [x for x in a if x % 2 != 0]print(even, odd)print(len(odd) > len(even), sum(odd) < sum(even))
[20, 30] [1, 3, 5] True True
Тонкости:«выше среднего» и ноль

Число выше среднего строки, если x > S / n, то есть n · x > S — снова без деления. Слова «выше среднего» относятся только к той части условия, где они стоят: если количества сравнивают среди чисел выше среднего, а суммы — по всей строке, для сумм берут все числа.

a = [1, 3, 5, 20, 30]print([x for x in a if len(a) * x > sum(a)])
[20, 30]

Ноль чётный: 0 % 2 == 0. Для отрицательных чисел проверка тоже работает: -7 % 2 в Python равно 1.

Итого

  • Две группычастота 1 и частота больше 1
  • СУММЕСЛИ=СУММЕСЛИ(G1:L1;1;A1:F1), для повторяющихся ">1"
  • Два списка[x for x in a if a.count(x) == 1]
  • Средниесначала структура, потом S₁ · k₂ > S₂ · k₁
  • Чётностьx % 2 == 0, =ОСТАТ(A1;2)

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

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

Вопрос 1
Найди сумму неповторяющихся и сумму повторяющихся чисел строки 6, 6, 1, 2, 3, 4.
ОтветСкрыть ответ
Ответ
10 и 12: 1 + 2 + 3 + 4 = 10, 6 + 6 = 12.
Вопрос 2
Подходит ли строка 6, 6, 1, 2, 3, 4 под задачу темы?
ОтветСкрыть ответ
Ответ
Нет: структура подходит, но среднее неповторяющихся 10 / 4 = 2,5 не больше 12 (без деления: 10 < 4 · 12).
Вопрос 3
Строка 3, 3, 3, 8, 8, 1. Чему равна сумма повторяющихся чисел с учётом всех появлений и без учёта повторений?
ОтветСкрыть ответ
Ответ
25 и 11: 3 + 3 + 3 + 8 + 8 = 25, а 3 + 8 = 11.
Вопрос 4
Числа строки — в A1:F1, их частоты — в G1:L1. Запиши формулу суммы неповторяющихся чисел.
ОтветСкрыть ответ
Ответ
=СУММЕСЛИ(G1:L1;1;A1:F1): выбрать позиции с частотой 1 и сложить числа на этих позициях.
Вопрос 5
Сколько в строке 2, 7, 4, 9, 6 чётных и нечётных чисел и чему равны их суммы?
ОтветСкрыть ответ
Ответ
Чётных три, сумма 12; нечётных два, сумма 16 — нечётных меньше, а их сумма больше.

Практика

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

Среднее повторяющихся меньше

Сколько строк учебной таблицы 9.txt содержат и повторяющиеся, и неповторяющиеся числа, причём среднее повторяющихся (с учётом повторений) меньше среднего неповторяющихся?

9.txtУчебная таблица подтемы 1: шесть строк по шесть чиселТекстовый файл · 79 Б

Введите число.

Тройка и три одиночных

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

9-3.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 29,2 КБ9-3.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 17,1 КБ

Введите число.

Наименьшие двух групп

В каждой строке таблицы 9-4.xlsx, 9-4.txt записаны семь натуральных чисел. Определи количество строк, в которых одно число встречается трижды, другое — дважды, остальные различны, а наименьшее из повторяющихся чисел больше наименьшего из неповторяющихся.

9-4.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 32,6 КБ9-4.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 19,9 КБ

Введите число.

Различные повторяющиеся значения

Для таблицы 9-3.xlsx, 9-3.txt определи количество строк, в которых два числа встречаются по два раза, два — по одному, а сумма повторяющихся чисел без учёта повторений (каждое значение один раз) больше суммы неповторяющихся.

9-3.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 29,2 КБ9-3.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 17,1 КБ

Введите число.

Остаток отрицательного числа

Чему равно -7 % 2 в Python?

Введите число.

Чётных больше, сумма нечётных больше

В каждой строке таблицы 9-5.xlsx, 9-5.txt записаны восемь натуральных чисел. Определи количество строк, в которых чётных чисел больше, чем нечётных, а сумма нечётных чисел больше суммы чётных.

9-5.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 38,6 КБ9-5.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 22,7 КБ

Введите число.

Заметные числа

Для таблицы 9-5.xlsx, 9-5.txt назовём число строки заметным, если оно строго больше среднего арифметического всех чисел строки. Определи количество строк, в которых заметных нечётных чисел больше, чем заметных чётных, а сумма всех чётных чисел строки больше суммы всех её нечётных.

9-5.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 38,6 КБ9-5.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 22,7 КБ

Введите число.