직각 이등변 삼각형이 주어집니다. 이등변 삼각형은 두 변의 길이가 같은 삼각형입니다. 직각삼각형은 높이(그림에서 ag)와 밑변(그림에서 dg)이 서로 수직인 삼각형입니다. 목표는 한 변이 2제곱미터인 이 직각 이등변 삼각형에 들어갈 수 있는 정사각형의 최대 수를 찾는 것입니다. 측면 밑변 또는 높이(둘 다 같음)가 입력으로 사용됩니다. 제곱수를 출력합니다.
문제를 이해하려면 아래 그림을 참조하십시오.
높이가 g이고 밑변이 gd인 주어진 삼각형은 변이 2인 정사각형이 3개 있습니다. 모서리 끝 'a'와 'd'에서 삼각형 aib와 cde는 정사각형에 기여하지 않습니다. 따라서 먼저 이 삼각형에 대해 항상 2단위의 추가 길이가 필요합니다. 아니오를 계산하려면 나머지 기본 gd(또는 높이 ag)를 2로 나누어야 합니다. 사각형의. 키( ag )도 마찬가지입니다.
while(base> 2 ) squares+=(base-2)/2 base =base-2. Ap =b*(b+1)/2…의 공식을 사용합니다. 여기서 new b=b-2
예를 들어 이해합시다.
입력 − 기본:12
출력 − 제곱수 :15
설명
<이전>밑수 12>2, 정사각형 10/2=5, 새 밑수 12-2=10 밑수 10>2, 정사각형 8/2=4, 새 밑수 10-2=8밑수 8>2, 정사각형 6/2=3 , 새 밑수 8-2=6 밑수 6>2, 정사각형 4/2=2, 새 밑수 6-2=4 밑수 4>2, 정사각형 2/2=1, 새 밑수 4-2=2 밑수 2>2 X 총 정사각형 =5+4+3+2+1=15입력 − .5
출력 − 제곱 수 − 1
설명
밑수 5>2, 정사각형 3/2=1, 새 밑수 5-2=3 밑수 3>2, 정사각형 1/2=0, 새 밑수 3-2=1밑수 1>2 X 총 정사각형=1사전>아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
정수 변수 base는 삼각형의 밑을 저장하는 데 사용됩니다.
-
함수 numofSquares(int b)는 밑변이 b인 삼각형이 수용할 수 있는 정사각형의 수를 계산하는 데 사용됩니다.
-
처음에 b=b-2 -모서리 끝에서 추가 공간
-
b=floor(b/2) 공식에 따르면 이 새로운 b는 변 2의 b*(b+1)/2제곱을 가질 수 있습니다.
-
계산을 제곱수로 반환합니다.
예시
#include#include int numofSquares(int b){ // 항상 필요한 추가 부분을 제거합니다. // b =(b - 2); // 각 정사각형의 밑변은 // 길이가 2이므로 b =floor(b / 2); return b * (b + 1)/2;}int main(){ int base =8; printf("최대 제곱수 :%d",numofSquares(base)); 반환 0;}
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
최대 개수 수용 가능한 정사각형:6