Тип 9 № 64894 

Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.
Назовём ячейку таблицы интересной, если выполняются следующие условия:
— число в данной ячейке больше не встречается в данной строке;
— число в данной ячейке встречается в данном столбце, включая данную ячейку, больше 150 раз.
Определите количество строк таблицы, содержащих не менее 5 интересных ячеек.
Задание 9
Решение. Для начала найдем сколько раз числа повторяются в строке. Для этого в ячейку G1 введем формулу:
=СЧЁТЕСЛИ($A1:$F1;A1)
и скопируем ее на диапазон G1:L16000.
Найдем, сколько раз числа повторяются в столбце. Для этого в ячейку M1 введем формулу:
=СЧЁТЕСЛИ(A$1:A$16000;A1)
и скопируем ее на диапазон M1:R16000.
Проверим каждую ячейку и узнаем, интересная она или нет. Для этого в ячейку S1 введем формулу:
=ЕСЛИ(И(G1=1;M1>150);1;0)
и скопируем ее на диапазон S1:X16000.
Посчитаем количество интересных ячеек в строке и узнаем, удовлетворяет ли условию строка. Для этого в ячейку Y1 введем формулу:
=ЕСЛИ(СУММ(S1:X1)>4;1;0)
и скопируем ее на диапазон Y1:Y16000.
Окончательно находим количество искомых строк. Для этого записываем следующее:
=СУММ(Y1:Y16000)
и получаем ответ 9527.
Ответ: 9527.
Приведём решение Юрия Красильникова на языке Python.
f = open('09.csv')
k = 0
arow = [[int(x) for x in s.split(';')] for s in f]
acol = [[arow[i][j] for i in range(len(arow))] for j in range(6)]
for i in range(len(arow)):
kint = 0
for j in range(6):
x = arow[i][j]
if arow[i].count(x) == 1 and acol[j].count(x) > 150:
kint += 1
if kint >= 5:
k += 1
print(k)
Приведём другое решение Юрия Красильникова на языке Python.
lines = [list(map(int,s.split(';'))) for s in open('09.csv')]
d={}
for line in lines:
for i in range(6):
if line[i] not in d:
d[line[i]]=[0]*6
d[line[i]][i] += 1
goodlines = [line for line in lines if sum([line.count(line[i])==1 and d[line[i]][i] > 150 for i in range(6)]) >= 5]
print(len(goodlines))
Примечание. Файл следует сохранить в формате CSV.
Ответ: 9527