Задача
Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.
Входные данные
В одной строке заданы гипотенуза [latex] (c)[/latex] и катет [latex] (a)[/latex] прямоугольного треугольника, не превышающие [latex]1000[/latex].
Выходные данные
В одной строке через пробел — второй катет и радиус вписанной окружности с точностью два знака после запятой.
Тесты
Входные данные | Выходные данные | |||
1. | 5 | 4 | 3.00 | 1.00 |
2. | 3.25 | 1 | 3.09 | 0.42 |
3. | 15 | 8 | 12.69 | 2.85 |
4. | 42.2 | 25 | 34.00 | 8.40 |
5. | 62 | 23 | 57.58 | 9.29 |
6. | 125 | 47 | 115.83 | 18.91 |
7. | 1000 | 758 | 652.25 | 205.13 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> #include <math.h> #include <iomanip> using namespace std; int main() { double a,c,b; cin >> c >> a; b=sqrt(c*c-a*a); cout<< fixed << setprecision(2) << b << " " << (a+b-c)/2 << endl; return 0; } |
Решение
Для нахождения катета необходимо воспользоваться теоремой Пифагора [latex]c^2=a^2+b^2 \ \Rightarrow \ b^2=c^2-a^2 \ \Rightarrow \ b=\sqrt(c^2-a^2)[/latex].
Радиус окружности, вписанной в прямоугольный треугольник:
рассмотрим прямоугольный треугольник [latex]ABC[/latex] со вписанной окружностью с центром в точке [latex]O[/latex].
[latex]OD=OE=r[/latex] ; [latex]AC[/latex], [latex]CB[/latex], [latex]AB[/latex] — касательные к окружности. По свойствам касательных (1.касательная к окружности перпендикулярна радиусу, проведенному в точку касания; 2.отрезки касательных, проведенных из одной точки равны) [latex]AE=AD, DC=FC, BF=BE[/latex] ; [latex]OD\perp AC, OE\perp AC[/latex], следовательно [latex]AEOD[/latex] — квадрат и [latex]AD=AE=r[/latex].
Пусть [latex]AC=a, AB=b, BC=c[/latex], тогда [latex]\begin{cases}r+DC=a\\r+BE=b\\DC+BE=c\end{cases}\Rightarrow \begin{cases}DC=a-r\\BE=b-r\\a+b-2r=c\end{cases} \Rightarrow[/latex]
[latex]r=\frac{a+b-c}{2}[/latex].
Для отправки комментария необходимо войти на сайт.