7-1 烟囱的高度 分数 8 全屏浏览题目 切换布局 作者 李祥 单位 湖北经济学院 已知人离烟囱的距离为 a,人的眼睛离地高度为 b,人看烟囱顶时的仰角为 θ,求烟囱的高度 h。 输入格式 a b θ 注:a、b 的单位为米,均为小数。仰角 θ 的单位为角度,包括度、分和秒数,其中度、分为整数,秒数为小数。 输出格式 h 注:h 的单位为米。 要求:输出2位小数,末位四舍五入。
时间: 2023-06-26 07:05:25 浏览: 221
用递归的方法求阶乘(C语言版)
题目描述
已知人离烟囱的距离为 $a$,人的眼睛离地高度为 $b$,人看烟囱顶时的仰角为 $\theta$,求烟囱的高度 $h$。
输入格式
$a\ b\ \theta$
输出格式
$h$
数据范围
$a,b,h,\theta \in [0,100]$
输入样例
10.0 1.0 30
输出样例
14.64
算法1
(三角函数) $O(1)$
根据三角函数中的正切函数可知:
$$\tan \theta = \frac{h}{a}$$
因此,
$$h = a \tan \theta$$
题目中给出的是仰角,而正切函数需要的是俯角,因此需要将仰角转换为俯角。俯角为 $90^\circ - \theta$,因此有:
$$\tan (90^\circ - \theta) = \cot \theta = \frac{b}{a}$$
因此,代入原式得:
$$h = a \tan \theta = a \frac{\tan \theta}{\cot \theta} = \frac{a}{\frac{b}{a}} = \frac{a^2}{b}$$
C++ 代码
时间复杂度
$O(1)$
算法2
(勾股定理) $O(1)$
根据勾股定理可知:
$$h = \sqrt{(a^2 + b^2) - 2ab \cos \theta}$$
因此,代入原式得:
$$h = \sqrt{a^2 + b^2 - 2ab \cos \theta}$$
C++ 代码
时间复杂度
$O(1)$
阅读全文