πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №9 → Задание i09-05

Задание №9 ЕГЭ Информатика с ответом и решением

Ответ: 3094

Условие

В каждой строке электронной таблицы записаны четыре натуральных числа. Определите, сколько в таблице таких четвёрок, из которых можно выбрать три числа, которые не могут быть сторонами никакого треугольника, в том числе вырожденного (вырожденным называется треугольник, у которого сумма длин двух сторон равна длине третьей стороны).

Подсказки — как подойти к решению

  1. Искать «не-треугольник» перебором всех четвёрок не нужно: достаточно сравнить в строке наибольшее число с суммой двух наименьших.
  2. Два наименьших числа строки удобно получить функциями МИН и НАИМЕНЬШИЙ с указанием второго по величине значения, а не сортировкой вручную — числа в строке стоят в произвольном порядке.
  3. Сравнение должно быть строгим: равенство даёт вырожденный треугольник, который по условию треугольником считается, поэтому такие строки не подходят; пометь строки единицами и нулями и сложи пометки.

Решение

Заметим, что если наибольшее число из четырёх больше суммы двух наименьших чисел в строке, то в такой четвёрке чисел можно выбрать три числа, которые не могут быть сторонами никакого треугольника, в том числе вырожденного. Тогда в ячейку 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.

Приведём решение Юрия Красильникова на языке Python.

# Необходимо предварительно сохранить данные из таблицы LibreOffice Calc

# в файл .csv с разделителем ';'

ответ = 0

for строка in open('9.csv'):

числа = sorted(list(map(int, строка.split(';'))))

if числа[3] > sum(числа[:2]): ответ += 1

print(ответ)

Приведём решение Сергея Донец на языке 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

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №9 по информатике