Подготовка к ЕГЭ и олимпиадам по информатике 2020 / Школьные олимпиады по программированию

Профильная информатика:
подготовка к ЕГЭ и олимпиадам

Вариант № OLYMP_2901

Добавлен 28 октября 2018 г. в 0:00. Изменён 28 октября 2018 г. в 0:00.Скачать PDF
1 2 3 4 5

Задача 2. Надёжное крепление

Задание

Уличный рекламный щит прикреплён к опоре при помощи трёх креплений. Первое крепление может выдерживать ветер, скорость которого не превосходит A м/c, второе крепление – B м/c, третье – C м/с. Сам щит будет надёжно закреплён, если как минимум два крепления из трёх выдерживают ветер данной скорости. Определите максимальную скорость ветра, которую выдержит данный щит.

Программа получает на вход три целых положительных числа A, B, С, не превосходящие 2×109, – допустимые скорости ветра, которые выдерживают три крепления щита. Программа должна вывести одно число – максимальную скорость ветра, которую выдержит щит.

Решение

Согласно условию задачи, крепление считается надёжным, если любые две или более опоры выдерживают заданную скорость ветра. Иными словами, искомая максимальная скорость ветра равна второму элементу массива [a, b, c], отсортированного по неубыванию. В Python3 это можно сделать одной строкой кода:

Копировать

print(sorted([int(input()), int(input()), int(input())])[1])

Разумеется, в данной задаче можно обойтись без сортировки массива. Для этого необходимо и достаточно определить среднее среди введённых значений a, b, c. Достаточно громоздкий код программы на языке Pascal приведён ниже:

Копировать
var
  a, b, c: integer;
begin
  read(a, b, c);
  if (a <= b) and (a >= c) or (a >= b) and (a <= c) then
    write(a)
  else if (b <= a) and (b >= c) or (b >= a) and (b <= c) then
    write(b)
  else
    write(c)
end.

Если не использовать сложные условия в операторах if, код может оказаться еще более сложным и запутанным. К счастью, в некоторых языках имеются встроенные функции min и max. Несложно догадаться, что для min и max выполняются соотношения min{a, b, c} = min{min{a, b}, c} и max{a, b, c} = max{max{a, b}, c}.

Программа на языке Python3 содержит всего две строки. Очевидно, что если из суммы трёх чисел отнять максимальное и минимальное, то оставшееся число окажется искомым средним по величине значением.

Копировать
a, b, c = int(input()), int(input()), int(input())
print(a + b + c – min(a, b, c) – max(a, b, c))
Подробнее...