Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정삼각형에 내접된 고유한 사각형의 수

<시간/>

우리는 한 변의 길이가 있는 정삼각형입니다. 목표는 직사각형의 수평면이 밑변과 평행하도록 삼각형 내부에 존재할 수 있는 별개의 직사각형의 수를 계산하는 것입니다. 또한 직사각형의 모든 끝점이 그림과 같이 점에 닿습니다.

C++에서 정삼각형에 내접된 고유한 사각형의 수

예를 들어 이해하자

입력 - 면=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