Тип 9 № 58322 
Работа с таблицами. Задания для подготовки
i
Откройте файл электронной таблицы, содержащей в каждой строке четыре натуральных числа.
Задание 9
Определите количество строк таблицы, содержащих числа, для которых выполнено хотя бы одно из условий:
— квадрат наибольшего из четырёх чисел больше произведения трёх других;
— будучи упорядоченными, четыре числа образуют арифметическую прогрессию.
В ответе запишите только число.
Решение. Посчитаем количество ячеек, удовлетворяющих условиям. В ячейку E1 введем формулу =МАКС(A1:D1)^2 для нахождения квадрата максимального значения. Скопируем формулу на весь диапазон E1:E1000. В ячейку F1 введем формулу:
=ПРОИЗВЕД(A1:D1)/МАКС(A1:D1)
для поиска произведения оставшихся трех чисел. Скопируем формулу на весь диапазон F1:F1000. В ячейку G1 введем формулу =ЕСЛИ(E1>F1;1;0) для поиска ячеек, удовлетворяющих первому условию. Скопируем формулу на весь диапазон G1:G1000.
Для поиска ячеек, удовлетворяющих второму условию, в ячейку H1 введем формулу:
=СЧЁТЕСЛИ(A1:D1;МИН(A1:D1)+(МАКС(A1:D1)-МИН(A1:D1))/3).
Cкопируем формулу на весь диапазон H1:H1000.
В ячейку I1 введем формулу:
=СЧЁТЕСЛИ(A1:D1;МИН(A1:D1)+2*(МАКС(A1:D1)-МИН(A1:D1))/3).
Cкопируем формулу на весь диапазон I1:I1000.
В ячейку J1 введем формулу:
Cкопируем формулу на весь диапазон J1:J1000.
Если значение в ячейке равно 1, следовательно, строка образует арифметическую прогрессию.
Для поиска строк, удовлетворяющим всем условиям, в ячейку K1 введем формулу:
=ЕСЛИ(ИЛИ(G1=1;J1=1);1;0)
и скопируем формулу на весь диапазон K1:K1000. Теперь найдём количество строк, удовлетворяющих условию, введя формулу =СУММ(K1:K1000). Тогда ответ — 61.
Ответ: 61.
Приведём решение Ильи Андрианова на языке Python.
count = 0
for s in open('9_58322.txt'):
M = sorted([int(x) for x in s.split()])
if M[-1] ** 2 > (M[0] * M[1] * M[2]) or all(M[1] - M[0] == M[i+1] - M[i] for i in range(len(M)-1)):
count += 1
print(count)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Михаила Глинского на языке Python.
def F(m):
if m[3]-m[2] == m[2]-m[1] and m[2]-m[1] == m[1]-m[0]:
return 1
else: return 0
f = open('9_58322.txt')
count = 0
for s in f:
m=[int(x) for x in s.split()]
m.sort()
if F(m) == 1 or m[-1]**2 > m[0]*m[1]*m[2]:
count += 1
print(count)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Юрия Красильникова на языке Python.
a = [sorted(list(map(int,s.split(';')))) for s in open('9_58322.csv')]
b = [x for x in a if (x[3]**2>x[0]*x[1]*x[2]) or len(set([x[i+1]-x[i] for i in range(3)]))==1]
print(len(b))
Примечание. Файл следует сохранить в формате csv.
Ответ: 61