Задача
Определить высоту треугольника площадью [latex]S[/latex], если его основание больше высоты на величину [latex]a[/latex].
Входные данные
Два целых числа [latex]S[/latex] [latex](0 < S \leqslant 100)[/latex] и [latex]a[/latex] [latex](|a| \leqslant 100)[/latex].
Выходные данные
Вывести высоту треугольника с точностью до сотых.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { int s, a; double h, dk; Scanner in = new Scanner(System.in); s = in.nextInt(); a = in.nextInt(); dk = Math.sqrt(a*a + 8*s); h = (-a + dk) / 2; System.out.printf("%.2f",h); } } |
Решение
Для решения задачи нам понадобится формула для нахождения площади треугольника: [latex]S = \frac{1}{2} \cdot h \cdot c[/latex], где [latex]h[/latex] — высота, [latex]c[/latex] — сторона, к которой высота проведена. Вместо [latex]c[/latex] подставим [latex]h+a[/latex] (по условию задачи). Далее приходим к квадратному уравнению [latex]h^2 + a \cdot h — 2 \cdot S = 0[/latex]. Решив его, получим два корня. Второй корень нам не подходит, поскольку он меньше [latex]0[/latex], а длина не может быть отрицательной. Первый корень и будет ответом нашей задачи.
Ссылки
Ссылка на e-olymp
Ссылка на ideone