Тип 9 № 59833 
Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
— в строке есть только два равных числа, остальные 4 различны;
— среднее арифметическое повторяющихся чисел меньше, чем среднее арифметическое остальных чисел строки.
В ответе запишите только число.
Задание 9
Решение. Для решения задачи выпишем в столбцы от G до L повторяющиеся значения. Выпишем в ячейку G1 формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$F1;A1)=2;A1;"").
Данная формула вернет в ячейку значение из ячейки A1, если оно встречается два раза. Скопируем формулу на диапазон G1:L30000. В ячейку M1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ(G1:L1;">0")=2;СУММ(G1:L1)/2;0)
и скопируем ее на диапазон M1:M30000. В данном столбце будет среднее арифметическое чисел, которое повторяется в строке 2 раза, или 0, если таких значений нет. В ячейку N1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$G1;A1)=1;A1;"")
и скопируем ее на диапазон N1:S30000. Данная формула вернет значение в ячейки, если они не повторяются. В ячейку T1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ(N1:S1;">0")=4;СРЗНАЧ(N1:S1);0)
и скопируем ее на диапазон T1:T30000. В данном столбце будет среднее арифметическое всех чисел строки, если строка удовлетворяет условию задачи. В столбце U будем считать количество строк, удовлетворяющих нашему решению. Для этого введем формулу:
=ЕСЛИ(M1 < T1;1;0)
и скопируем ее на весь диапазон U1:U30000. Посчитаем количество строк, удовлетворяющих нашему условию, формулой: =СУММ(U1:U30000).
Ответ: 1483.
Приведём решение Ильи Андрианова на языке Python.
count = 0
for s in open('9.txt'):
M = sorted([int(x) for x in s.split()])
if len(set(M)) == 5:
copied = sum(M) - sum(set(M))
if copied < (sum(M) - copied*2) / 4:
count += 1
print(count)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Михаила Глинского на языке Python.
f = open('9.txt')
count = 0
for s in f:
m = [int(x) for x in s.split() ]
pov = [x for x in m if m.count(x)>1]
nepov = [x for x in m if m.count(x)==1]
if len(nepov) == 4 and len(pov) == 2 and sum(pov)/2 < sum(nepov)/4:
count += 1
print(count)
Примечание. Файл следует сохранить в формате txt.
Ответ: 1483