e-olymp 932. Высота треугольника

Задача

Определить высоту треугольника площадью [latex]S[/latex], если его основание больше высоты на величину [latex]a[/latex].

Входные данные

Два целых числа: [latex]S (0 < S ≤ 100), и[/latex] [latex]a[/latex] ([latex]\left | a \right |[/latex] ≤ 100).

Выходные данные

Искомая высота с точностью до сотых.

Тесты

# Входные данные Выходные данные
1 20 7 3.73
2 35 3 7.00
3 12 4 3.29
4 67 9 7.92
5 135 13 11.17

Код программы

Алгоритм решения задачи

  1. Формула для вычисления площади треугольника [latex]S=[/latex][latex]\frac{1}{2}\cdot h \cdot c[/latex], где [latex]h[/latex] – высота, а [latex]c[/latex] – сторона, к которой высота проведена.
  2. В задаче сказано, что основание больше высоты на величину [latex]a[/latex]. Значит вместо [latex]c[/latex] мы можем подставить в формулу [latex]h+a[/latex]. Теперь формула приобретает следующий вид: [latex]S=[/latex][latex]\frac{1}{2}\cdot h \cdot \left (h+a \right )[/latex]
  3. Cовершив некоторые преобразования приходим к квадратному уравнению [latex]h^{2}+a\cdot h-2\cdot S = 0[/latex]
  4. Далее находим дискриминант по формуле [latex]D = a^{2}+4\cdot2\cdot S[/latex]. Находим корень квадратный из дискриминанта [latex]\sqrt{D}[/latex]
  5. Находим высоту по формуле [latex]h=\frac{-a+\sqrt{D}}{2}[/latex]
  6. Второй корень нам не подходит, потому что он меньше [latex]0[/latex], а длина не может быть отрицательной.
  7. Подставляем исходные данные в формулы, получаем результат.

Также подробное описание представлено в коде программы.

Ссылки

Ссылка на e-olymp

Ссылка на ideone

А23a

Чежеумова Анна
Чежеумова Анна

Latest posts by Чежеумова Анна (see all)

Задача: Треугольник задан длинами сторон [latex] a,b,c [/latex].

Найти длины высот [latex] h_{1},h_{2},h_{3}[/latex].

a b c p h1 h2 h3 Коментарий
1 2 3 3 0 0 0 Пройден
3 4 5 6 4 3 2,4 Пройден
6 8 10 12 8 6 4,8 Пройден
13 14 15 21 12,92 12 11,2 Пройден
Решение:
Высота треугольника находится по формуле [latex]h=\frac{2S}{a}[/latex].
[latex] S [/latex]- площадь треугольника [latex] S=\sqrt{p(p-a)(p-b)(p-c)} [/latex].
[latex] p [/latex]- полупериметр треугольника [latex] p=\frac{a+b+c}{2} [/latex].
Затем вычисляем высоты [latex] h_{1},h_{2},h_{3}[/latex].