Тип 9 № 59834 

Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
— в строке есть только два равных числа, остальные 4 различны;
— сумма повторяющихся чисел меньше, чем среднее арифметическое остальных чисел строки.
В ответе запишите только число.
Задание 9
Решение. Для решения задачи выпишем в столбцы от G до L повторяющиеся значения. Выпишем в ячейку G1 формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$F1;A1)=2;A1;"").
Данная формула вернет в ячейку значение из ячейки A1, если оно встречается два раза. Скопируем формулу на диапазон G1:L50000. В ячейку M1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ(G1:L1;">0")=2;СУММ(G1:L1);0)
и скопируем ее на диапазон M1:M50000. В данном столбце будет сумма чисел, которые повторяется в строке 2 раза, или 0, если таких значений нет. В ячейку N1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$F1;A1)=1;A1;"")
и скопируем ее на диапазон N1:S50000. Данная формула вернет значение в ячейки, если они не повторяются. В ячейку T1 выпишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ(N1:S1;">0")=4;СРЗНАЧ(N1:S1);0)
и скопируем ее на диапазон T1:T50000. В данном столбце будет среднее арифметическое всех чисел строки, если строка удовлетворяет условию задачи. В столбце U будем считать количество строк, удовлетворяющих нашему решению. Для этого введем формулу:
=ЕСЛИ(M1 < T1;1;0)
и скопируем ее на весь диапазон U1:U50000. Посчитаем количество строк, удовлетворяющих нашему условию, формулой: =СУММ(U1:U50000).
Ответ: 613.
Приведём решение Бориса Савельева на языке Python.
f = open('9.txt')
cnt = 0
for s in f:
a = list(map(int, s.split()))
if len(set(a)) == 5:
suma=0
sr=0
for i in range (0,len(a)):
if a.count(a[i]) == 2:
suma += a[i]
sr = (sum(a) - suma)/4
if suma < sr:
cnt+=1
print(cnt)
Приведём решение Ильи Андрианова на языке 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) == 2]
B = [x for x in M if M.count(x) == 1]
if len(A) == 2 and len(B) > 0:
if sum(A) < (sum(B) / len(B)):
count += 1
print(count)
Примечание. Файл требуется сохранить в формате txt.
Приведём решение Сергея Калугина на языке Python.
f = open('99.csv')
k = 0
p = []
for s in f:
a = sorted(list(map(int,s.split(';'))))
for i in range(len(a)-1):
if a[i]==a[i+1] and len(set(a))==5:
p.append(a[i])
if (a[i])*2 < (sum(a)-((a[i])*2))/4:
k += 1
print(k)
Примечание. Файл требуется сохранить в формате csv.
Ответ: 613