Тип 9 № 46967 
Работа с таблицами. Задания для подготовки
i
В каждой строке электронной таблицы записаны четыре натуральных числа. Определите, сколько в таблице таких четвёрок, из которых можно выбрать три числа, которые не могут быть сторонами никакого треугольника, в том числе вырожденного (вырожденным называется треугольник, у которого сумма длин двух сторон равна длине третьей стороны).
Задание 9
Решение. Заметим, что если наибольшее число из четырёх больше суммы двух наименьших чисел в строке, то в такой четвёрке чисел можно выбрать три числа, которые не могут быть сторонами никакого треугольника, в том числе вырожденного. Тогда в ячейку E1 запишем формулу =МАКС(A1:D1) и скопируем её во все ячейки диапазона E2:E5000. В ячейку F1 запишем формулу =МИН(A1:D1) и скопируем её во все ячейки диапазона F2:F5000. В ячейку G1 запишем формулу =НАИМЕНЬШИЙ(A1:D1;2) и скопируем её во все ячейки диапазона G2:G5000. Таким образом, найдём наибольшее число и два наименьших числа в строке. В ячейку H1 запишем формулу =ЕСЛИ(E1>F1+G1;1;0) и скопируем её во все ячейки диапазона H2:H5000. Окончательно с помощью формулы =СУММ(H1:H5000) получим ответ — 3094.
Ответ: 3094.
Приведём решение Сергея Калугина на языке Python.
cnt = 0
f = open('107_9.csv')
for s in f:
a = list(map(int,s.split(';')))
a.sort()
if a[0] + a[1] < a[2] or a[0] + a[1] < a[3]:
cnt+=1
print(cnt)
Примечание. Файл следует сохранить в формате CSV.
Приведём решение Сергея Донец на языке PascalABC.NET.
uses XLSX;
begin
var cnt := 0;
var data := ReadXLSXAsInts('46967.xlsx');
foreach var rw in data do
if rw.Combinations(3).Any(trio ->
begin
var (a, b, c) := trio.Order;
result:=a + b < c;
end)
then cnt += 1;
Println(cnt);
end.
Примечание. Файл следует сохранить в формате xlsx.
Ответ: 3094