在 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)
以上是 在 Python 中检查给定区域和斜边是否可能出现直角三角形 的全部内容, 来源链接: utcz.com/z/349190.html