Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 영역과 빗변에서 직각 삼각형이 가능한지 확인하십시오.

<시간/>

직각 삼각형의 빗변과 넓이가 있다고 가정하고 이 삼각형의 밑변과 높이를 찾아야 합니다. 불가능하면 False를 반환합니다.

따라서 입력이 hypo =10, area =24와 같으면 출력은 (6, 8)이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • hypo_sq :=하이포 * 하이포
  • s :=(hypo_sq / 2.0)의 제곱근
  • maxArea :=밑변 s와 빗변 빗변을 사용하여 삼각형의 면적 계산
  • 영역> maxArea이면
    • 거짓을 반환
  • 왼쪽 :=0.0, 오른쪽 :=s
  • 동안 |오른쪽 - 왼쪽|> 0.000001, do
    • 기본 :=(왼쪽 + 오른쪽) / 2.0
    • 밑변 s와 빗변 하이포를 사용하는 삼각형의 넓이>=넓이이면
      • 오른쪽 :=기본
    • 그렇지 않으면
      • 왼쪽 :=베이스
  • 높이:=(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)