Задача
Определить высоту треугольника площадью [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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath>//данная библиотека позволяет извлекать корень квадратный #include <iomanip>//данная библиотека позволяет устанавливать количество знаков после запятой using namespace std; int main() { int s, a;//площадь треугольника,разность основания и высоты int d;//дискриминант double h, dk;// высота треугольника, корень квадратный из дискриминанта cin >> s >> a; d = a*a + 8*s;//формула для нахождения дискриминанта dk = sqrt(d);//извлекаем корень квадратный из дискриминанта h = (-a + dk)/2;//формула для нахождения высоты треугольника cout << fixed << setprecision(2) << h;// функция с её аргументом позволяет вывеси результат, округлённый до двух десятичных знаков return 0; } |
Алгоритм решения задачи
- Формула для вычисления площади треугольника [latex]S=[/latex][latex]\frac{1}{2}\cdot h \cdot c[/latex], где [latex]h[/latex] – высота, а [latex]c[/latex] – сторона, к которой высота проведена.
- В задаче сказано, что основание больше высоты на величину [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]
- Cовершив некоторые преобразования приходим к квадратному уравнению [latex]h^{2}+a\cdot h-2\cdot S = 0[/latex]
- Далее находим дискриминант по формуле [latex]D = a^{2}+4\cdot2\cdot S[/latex]. Находим корень квадратный из дискриминанта [latex]\sqrt{D}[/latex]
- Находим высоту по формуле [latex]h=\frac{-a+\sqrt{D}}{2}[/latex]
- Второй корень нам не подходит, потому что он меньше [latex]0[/latex], а длина не может быть отрицательной.
- Подставляем исходные данные в формулы, получаем результат.
Также подробное описание представлено в коде программы.
Ссылки
Ссылка на e-olymp
Ссылка на ideone
Для отправки комментария необходимо войти на сайт.