Тип 9 № 69914 
Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для чисел которых выполнены оба условия:
— в строке есть одно число, которое повторяется трижды, остальные три числа различны;
— повторяющееся число строки не меньше, чем среднее арифметическое трёх её неповторяющихся чисел.
В ответе запишите только число.
Задание 9
Решение. Сначала проверим первое условие. Для этого в ячейку G1 введем формулу:
=СЧЁТЕСЛИ($A1:$F1;A1)
и скопируем эту формулу во все оставшиеся ячейки диапазона G1:L20000.
В ячейку M1 введем формулу:
=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;1)=3;СЧЁТЕСЛИ(G1:L1;3)=3);1;0)
и скопируем эту формулу во все оставшиеся ячейки диапазона M2:M20000. Если в строке 3 повторяющихся числа и 3 различных, в ячейке М будет стоять 1, иначе будет стоять 0.
Для проверки второго условия в ячейку N1 введем формулу:
=ЕСЛИ(G1=3;A1;"")
и скопируем эту формулу в ячейки диапазона N1:S20000. В данном диапазоне мы получим только повторяющиеся трижды числа.
В ячейку Т1 введем формулу:
=СУММ(N1:S1)
и скопируем эту формулу во все оставшиеся ячейки диапазона Т2:Т20000. В этом столбце будет сумма повторяющихся чисел.
В ячейку U1 введем формулу:
=(СУММ(A1:F1)-T1)/3
и скопируем эту формулу во все оставшиеся ячейки диапазона U2:U20000. В этом столбце будет среднее арифметическое неповторяющихся чисел. (Заметим, что для ячеек, в которых число неповторяющихся чисел не равно 3, формула не будет давать правильное значение среднего, но такие строки нам не подходят по первому условию.)
Проверим строки, подходящие под оба условия. Для этого в ячейку V1 введем формулу:
=ЕСЛИ(И(M1=1;T1/3>=U1);1;0)
и скопируем эту формулу во все оставшиеся ячейки диапазона U2:U20000.
Окончательно воспользовавшись формулой:
=СУММ(V:V),
получим ответ — 12.
Ответ: 12.
Приведём решение Юрия Лысакова на языке Python.
f = open('69914.txt')
a = []
count = 0
for i in f:
a = [int(j) for j in i.split()] # считываем строку и переводим ее в целочисленный список
s,p,k = 0,0,0
for i in a:# ищем элементы которые повторяются 1 или 3 раза
if a.count(i) == 1:
s += i
k += 1
if a.count(i) == 3: p = i
if p != 0 and k == 3:# первое условие задачи
if p >= (s/3):
count += 1 #второе условие
print(count)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Михаила Глинского на языке Python.
f = open('69914.txt')
ks = 0
for s in f:
m=[int(x) for x in s.split()]
p=[x for x in m if m.count(x)==3]
n=[x for x in m if m.count(x)==1]
if len(p) == 3 and len(n) == 3 and p[0] >= sum(n)/3:
ks += 1
print(ks)
Примечание. Файл следует сохранить в формате txt.
Ответ: 12