우리는 한 변의 길이가 있는 정삼각형입니다. 목표는 직사각형의 수평면이 밑변과 평행하도록 삼각형 내부에 존재할 수 있는 별개의 직사각형의 수를 계산하는 것입니다. 또한 직사각형의 모든 끝점이 그림과 같이 점에 닿습니다.
예를 들어 이해하자
입력 - 면=3
출력 − 정삼각형에 내접하는 고유한 직사각형의 수는 − 1
설명 − 위 그림은 사각형을 나타냅니다.
입력 - 면=10
출력 − 정삼각형에 내접된 고유한 직사각형의 개수는 − 200입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
위의 그림에서 볼 수 있듯이 서로 다른 레벨의 점 사이에 수평 가장자리가 존재함을 알 수 있습니다.
도트 수는 레벨 0-1, 레벨 1-2 ... 레벨 n-n+1부터 셀 수 있습니다.
-
측면을 정수 변수로 입력하고 추가 처리를 위해 함수에 전달합니다.
-
임시 변수를 count, temp 및 check로 사용합니다.
-
IF 면이 홀수인지 확인한 다음 FOR i 에서 면으로 루프를 시작하십시오 - i 가 1보다 클 때까지 1
-
루프 내에서 IF i &1을 확인한 다음 temp를 (sides - i)/2로 설정하고 check를 (i * (i + 1))/2로 설정하고 count를 check * temp ELSE로 설정하고 temp를 ((sides - 1) - i)/2 그리고 검사를 (i * ( i + 1))/2로 설정하고 count를 검사 * temp로 설정
-
그렇지 않고 변이 짝수이면 i가 변 - 1이고 i가 1보다 큰 다른 루프 FOR를 시작합니다.
-
루프 내부에서 IF i &1을 확인한 다음 temp를 ((sides - 1) - i ) / 2로 설정하고 check를 (i * (i + 1)) / 2로 설정하고 count를 check * temp ELSE로 설정합니다. ELSE는 temp를 다음과 같이 설정합니다. (sides - i) / 2 및 수표를 (i * (i + 1)) / 2로 설정하고 카운트를 수표 * 온도로 설정합니다.
-
반품 횟수
-
결과를 인쇄하십시오.
예시
#include <iostream> using namespace std; int rec_inside_equi(int sides){ int count = 0, temp, check; if(sides%2 != 0){ for(int i = sides - 2; i >= 1; i--){ if (i & 1){ temp = (sides - i) / 2; check = (i * (i + 1)) / 2; count += check * temp; } else{ temp = ((sides - 1) - i) / 2; check = (i * (i + 1)) / 2; count += check * temp; } } } else{ for(int i = sides - 2; i >= 1; i--){ if (i & 1){ temp = ((sides - 1) - i) / 2; check = (i * (i + 1)) / 2; count += check * temp; } else{ temp = (sides - i) / 2; check = (i * (i + 1)) / 2; count += check * temp; } } } return count; } int main(){ int sides = 4; cout<<"Count of distinct rectangles inscribed in an equilateral triangle are: "<<rec_inside_equi(sides); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of distinct rectangles inscribed in an equilateral triangle are: 4