Тип 9 № 63058 
Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.
Определите количество строк таблицы, для чисел которых одновременно выполнены все следующие условия:
— в строке есть повторяющиеся числа;
— максимальное число в строке не повторяется;
— сумма всех повторяющихся чисел в строке меньше максимального числа этой строки. При подсчёте суммы повторяющихся чисел каждое число учитывается столько раз, сколько оно встречается.
В ответе запишите число — количество строк, удовлетворяющих заданным условиям.
Задание 9
Решение. Для начала найдем, сколько раз числа повторяются в строке. Для этого в ячейку G1 введем формулу:
=СЧЁТЕСЛИ($A1:$F1;A1)
и скопируем ее на диапазон G1:L16000.
Теперь проверим первое условие. Для этого в ячейку M1 впишем формулу:
=ЕСЛИ(СУММ(G1:L1)>6;1;0)
и скопируем формулу до ячейки M16000.
В столбце N выпишем максимальное число строки, для этого в ячейке N1 введем формулу:
=МАКС(A1:F1)
и скопируем формулу до ячейки N16000.
Теперь проверим второе условие. Для этого в ячейку O1 впишем формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$F1;N1)=1;1;0)
и скопируем формулу до ячейки O16000.
Выпишем повторяющиеся числа без учета максимального. Для этого в ячейку P1 введем формулу:
=ЕСЛИ(И(G1>1;A1<>$N1);A1;0)
и скопируем ее на диапазон P1:U16000.
Теперь проверим третье условие. Для этого в ячейку V1 впишем формулу:
=ЕСЛИ(И(СУММ(P1:U1)< N1;СУММ(P1:U1)<>0);1;0)
и скопируем формулу до ячейки V16000.
В столбце W будем проверять строки на соответствие всем условиям задачи, для этого в ячейку W1 введем формулу:
=ЕСЛИ(И(M1=1;O1=1;V1=1);1;0)
и скопируем формулу до ячейки W16000.
Окончательно находим количество искомых строк. Для этого в ячейку X1 записываем следующее:
=СУММ(W1:W16000)
и получаем ответ — 884.
Ответ: 884.
Приведём решение Бориса Савельева на языке Python.
f = open('9.txt')
cnt = 0
for s in f:
a = list(map(int, s.split()))
if len(set(a)) != len(a):
if a.count(max(a)) == 1:
suma = 0
for i in range (0,len(a)):
if a.count(a[i]) > 1:
suma += a[i]
if suma < max(a):
cnt += 1
print(cnt)
Приведём решение Ильи Андрианова на языке Python.
count = 0
for s in open('9.txt'):
M = sorted([int(x) for x in s.split()])
if len(M) != len(set(M)): # — в строке есть повторяющиеся числа;
if M.count(max(M)) == 1: # — максимальное число в строке не повторяется;
if sum([x for x in M if M.count(x) > 1]) < max(M):
count += 1
print(count)
Приведём решение Михаила Глинского на языке Python.
k = 0
for s in open('09.txt'):
m = [int(x) for x in s.split()]
m.sort()
pov = [x for x in m if m.count(x)>1]
nepov = [x for x in m if m.count(x)==1]
if m.count(m[-1]) == 1 and len(pov) > 0 and sum(pov) < m[-1]:
k += 1
print(k)
Примечание. Файл следует сохранить в формате txt.
Ответ: 884