Тип 9 № 55596 

Работа с таблицами. Задания для подготовки
i
В каждой строке электронной таблицы записаны шесть натуральных чисел.
Назовём ячейку таблицы хорошей, если для неё выполняются следующие условия:
— число в данной ячейке не встречается в других ячейках этой же строки;
— число в данной ячейке ровно 45 раз встречается в других строках таблицы.
Определите количество строк таблицы, содержащих хотя бы одну хорошую ячейку.
Задание 9
Решение. Для начала посчитаем, сколько раз встречается то или иное число в строках, для этого в ячейку G1 впишем =СЧЁТЕСЛИ($A1:$F1;A1) и растянем до ячейки L1 и вниз, до самого конца таблицы.
Теперь найдем, сколько раз число встречается в таблице, в ячейку M1 впишем формулу:
=СЧЁТЕСЛИ($A:$F;A1) и скопируем формулу до ячейки R6000.
Отметим хорошие ячейки, для этого введем в ячейку S1 формулу и скопируем ее до ячейки X6000:
=ЕСЛИ(И(G1=1;M1=46);1;0). В столбце Y будем считать количество хороших ячеек в строке, для этого в ячейку Y1 введем формулу и скопируем ее до ячейки Y6000:
=СУММ(S1:X1).
В столбце Z будем считать количество строк, содержащих хорошие ячейки, для этого в ячейку Z1 введем формулу и скопируем ее до ячейки Z6000:
=ЕСЛИ(Y1>=1;1;0).
Окончательно находим количество искомых строк. Для этого в ячейку AA1 записываем следующее:
=СУММ(Z1:Z6000)
и получаем ответ — 445.
Ответ: 445.
Примечание. Во втором условии задачи сказано, что число в данной ячейке ровно 45 раз встречается в других строках таблицы. Это значит, что есть само число и 45 таких же чисел в других строках, всего 46.
Приведём решение Юрия Красильникова на языке Python.
lines = [list(map(int,s.split(';'))) for s in open('09.csv')]
nums = [n for line in lines for n in line]
goodlines = [line for line in lines if any([line.count(n)==1 and nums.count(n)==46 for n in line])]
print(len(goodlines))
Приведём другое решение Юрия Красильникова на языке Python.
lines = [list(map(int,s.split(';'))) for s in open('09.csv')]
d={}
for line in lines:
for n in line:
d[n]=d.get(n,0)+1
goodlines = [line for line in lines if any([line.count(n)==1 and d[n]==46 for n in line])]
print(len(goodlines))
Примечание. Файл следует сохранить в формате csv с разделителями ';'
Ответ: 445