Тип 9 № 59778 

Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
— среди семи чисел совпадают ровно четыре числа;
— среднее значение неповторяющихся чисел больше суммы повторяющихся чисел.
В ответе запишите только число.
Задание 9
Решение. Для решения задачи выпишем в столбцы от H до N повторяющиеся значения. Выпишем в ячейку H1 формулу:
=ЕСЛИ(СЧЁТЕСЛИ( $A1:$G1;A1)=4;A1;""). Данная формула вернет в ячейку значение из ячейки A1, если оно встречается четыре раза. Скопируем формулу на диапазон H1:N16000. В ячейку O1 выпишем формулу =СУММ(H1:N1) и скопируем ее на диапазон O1:O16000. В данном столбце будет сумма повторяющихся чисел. В ячейку P1 выпишем формулу =ЕСЛИ(H1="";A1;"") и скопируем ее на диапазон P1:V16000. Данная формула вернет значение в ячейки, если они не повторяются. В ячейку W1 выпишем формулу =СРЗНАЧ(P1:V1) и скопируем ее на диапазон W1:W16000. В данном столбце будет среднее арифметическое всех чисел строки.
В столбце X будем считать количество строк, удовлетворяющих нашему решению. Для этого введем формулу:
=ЕСЛИ(И(O1>0;W1>O1);1;0)
и скопируем ее на весь диапазон X1:X16000.
Посчитаем количество строк, удовлетворяющих нашему условию, формулой: =СУММ(X1:X16000).
Ответ: 7.
Приведём решение Михаила Глинского на языке Python.
f=open('Задание 9.txt')
k=0
for x in f:
s = list(map(int,x.split()))
s.sort()
spov = sn = 0
for y in s:
if s.count(y) == 4:
spov=y*4
sn = sum(s) - spov
sn=sn/3
if sn > spov:
k += 1
print(k)
Приведём решение Михаила Глинского на языке Python.
k=0
for s in open('Задание 9.txt'):
m = [int(x) for x in s.split()]
m.sort()
n=set(m)
if len(n) == 4:
pov = [int(x) for x in m if m.count(x) > 1]
nep = [int(x) for x in m if m.count(x) == 1]
sr = sum(nep)/len(nep)
if sr > sum(pov):
k+=1
print(k)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Сергея Калугина на языке Python.
f = open('Задание 9.csv')
cnt = 0
for s in f:
p=[]
n=[]
a = list(map(int,s.split(';')))
if len(set(a))==4:
for i in range(len(a)):
if a.count(a[i])==4:
p.append(a[i])
else:
n.append(a[i])
if len(p)==4 and len(n)==3:
if sum(n)/len(n) > sum(p):
cnt+=1
print(cnt)
Примечание. Файл следует сохранить в формате csv.
Приведём решение Юрия Красильникова на языке Python.
# Необходимо предварительно сохранить данные из таблицы LibreOffice Calc
# в файл .csv с разделителем ';'
ответ = 0
for строка in open('9.csv'):
числа = list(map(int, строка.split(';')))
повторы = [x for x in числа if числа.count(x)==4]
уникумы = [x for x in числа if числа.count(x)==1]
if len(повторы)==4 and len(уникумы)==3 and sum(повторы) < sum(уникумы)/3:
ответ += 1
print(ответ)
Ответ: 7