Задача к ЕГЭ по информатике на тему «задачи под вебы» №22

Источник: https://kpolyakov.spb.ru/

В файле электронной таблицы 9-191.xls в каждой строке записаны 6 натуральных чисел.

Определите количество строк таблицы, для которых выполнены оба условия:

– в строке есть как повторяющиеся, так и неповторяющиеся числа;

– среднее арифметическое всех неповторяющихся чисел строки больше, чем среднее арифметическое всех повторяющихся чисел этой строки.

При вычислении средних значений каждое число учитывается столько раз, сколько оно встречается в строке.

Решение при помощи электронных таблиц

Для начала посчитаем, сколько раз встречается в строке каждое число. Для этого в ячейку G1  запишем формулу:

= С ЧЕ ТЕС ЛИ ($A1 : $F 1;A1)

и растягиваем ее вправо до ячейки L1  и вниз до конца таблицы.

В столбце M  найдем среднее арифметическое всех неповторяющихся чисел строки, для этого в ячейку M 1  запишем формулу:

= С РЗН АЧЕ СЛ И(G1 : L1;1;A1 : F1)

и растягиваем ее вниз до конца таблицы.

В столбце N  найдем среднее арифметическое всех повторяющихся чисел строки, для этого в ячейку N 1  запишем формулу:

= С РЗН АЧЕ СЛ И(G1 : L1;′′> 1′′;A1 : F1) » class=»math-display» src=»/images/inform/reshen/reshen-7824-9.svg» width=»auto»></div>
<p class= и растягиваем ее вниз до конца таблицы.

В некоторых строках столбцов M  и N  появились значения #Н/Д, поэтому с помощью фильтра нужно их убрать. Одновременно таким образом будет выполняться первое условие задачи.

В столбце O  проверим выполнение второго условия:

= ЕС ЛИ (M  1 > N 1;1;0) » class=»math-display» src=»/images/inform/reshen/reshen-7824-13.svg» width=»auto»></div>
<p class= Выделим столбец O  и получаем количество нужных строк – 2114.

Решение программой

f = open(’9-191.xls’)  # Открываем файл
c = 0  # Счетчик для строк
for i in f:  # Проходимся по файлу
    a = list(map(int, i.split(’;’)))  # Преобразовываем элементы строки в int
# и убираем разделители
    t = [a.count(j) == 1 for j in a]  # Проверка на то, что число повторяется
# в строке ровно один раз
    if any(t) and len(set(a)) < 6:  # Если есть и повторяющиеся,
# и неповторяющиеся числа
        sn = [j for j in a if a.count(j) == 1]  # Список из
# неповторяющихся чисел
        sp = [j for j in a if a.count(j) > 1]  # Список из
# повторяющихся чисел
        sn = sum(sn) / len(sn)  # Среднее арифметическое всех
# неповторяющихся чисел
        sp = sum(sp) / len(sp)  # Среднее арифметическое всех
# повторяющихся чисел
        if sn > sp:  # Проверяем, что среднее арифметическое всех
# неповторяющихся чисел больше, чем среднее арифметическое всех повторяющихся чисел
            c += 1  # Увеличиваем счетчик
print(c)  # Выводим ответ

Ответ: 2114
Оцените статью
Я решу все!