В каждой строке электронной таблицы записаны шесть натуральных чисел.
Определите, сколько в таблице строк, для которых выполнены следующие условия:
— в строке есть как повторяющиеся, так и неповторяющиеся числа;
— среднее арифметическое всех неповторяющихся чисел строки больше, чем среднее арифметическое всех повторяющихся чисел этой строки.
При вычислении средних значений каждое число учитывается столько раз, сколько оно встречается в строке.
В ответе запишите число — количество строк, для которых выполнены эти условия.
Для начала посчитаем, сколько раз встречается то или иное число в строк, для этого
=ЕСЛИ(И(СУММ(G1:L1)>6; ИЛИ(G1=1; H1 = 1; I1 = 1; J1 = 1; K1 = 1; L1 = 1)); 1; 0)
в ячейку M1.
Найдем теперь среднее арифметическое повторяющихся и неповторяющихся чисел.
и протягиваем до S1 и до конца таблицы.
=ЕСЛИ(M1 = 1; СРЗНАЧ(N1:S1);" ").
Аналогично находим среднее арифметическое для повторяющихся чисел (для них
Окончательно находим количество искомых строк. Для этого
и протягиваем до конца таблицы. Находим сумму с помощью
Ответ: 2102.
Приведём решение Ильи Андрианова на языке Python.
count = 0
for s in open('9.txt'):
M = [int(x) for x in s.split()]
A = [x for x in M if M.count(x) > 1]
B = [x for x in M if M.count(x) == 1]
if len(B) > 0 and len(A) > 0:
if (sum(B) / len(B)) > (sum(A) / len(A)):
count += 1
print(count)
Примечание 1. Файл следует сохранить в формате txt.
Примечание 2. В файле приведенного задания СтатГрад используются нули, что противоречит определению «натуральные числа». Данная опечатка не влияет на ответ.
Приведём решение Бориса Савельева на языке Python.
f = open('09.txt')
cnt = 0
for i in f:
a = list(map(int,i.split()))
if len(a) != len(set(a)):
sr1 = 0
k1 = 0
sr2 = 0
k2 = 0
for j in range (0,len(a)):
if a.count(a[j]) == 1:
sr1 += a[j]
k1 += 1
else:
sr2 += a[j]
k2 += 1
if k1!=0 and k2!=0:
if (sr1/k1)>(sr2/k2):
cnt += 1
print(cnt)

