在 Python 中检查给定区域和斜边是否可能出现直角三角形
假设我们有一个直角三角形的斜边和面积,我们必须找到这个三角形的底和高。如果不可能,则返回False。
因此,如果输入像hypo=10,area=24,那么输出将是(6,8)。
为了解决这个问题,我们将按照以下步骤操作-
hypo_sq:=hypo*hypo
s:=(hypo_sq/2.0)的平方根
maxArea:=使用底数和斜边hypo计算三角形的面积
如果area>maxArea,则
返回错误
左:=0.0,右:=s
而|右-左|>0.000001,做
左:=基础
右:=基础
基数:=(左+右)/2.0
如果使用底数s和斜边hypo>=面积的三角形面积,则
否则,
height:=(hypo_sq-base*base)的平方根并四舍五入到最接近的整数
四舍五入到最接近的基数整数
返回基数和高度
让我们看看以下实现以获得更好的理解-
示例代码
from math import sqrt
def calculate_area(b, h):
hei = sqrt(h*h - b*b);
return 0.5 * b * hei
def solve(hypo, area):
hypo_sq = hypo * hypo
s = sqrt(hypo_sq / 2.0)
maxArea = calculate_area(s, hypo)
if area > maxArea:
return False
left = 0.0
right = s
while abs(right - left) > 0.000001:
base = (left + right) / 2.0
if calculate_area(base, hypo) >= area:
right = base
else:
left = base
height = round(sqrt(hypo_sq - base*base))
base = round(base)
return base, height
hypo = 10
area = 24
print(solve(hypo, area))输入
10, 24输出结果
(6, 8)