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

C++에서 직각 이등변 삼각형에 들어갈 수 있는 최대 정사각형 수

<시간/>

주어진 과제는 밑변이 's'인 직각 이등변 삼각형 안에 들어갈 수 있는 변 'a'를 갖는 정사각형의 최대 수를 찾는 것입니다(이등변 삼각형은 최소한 2개의 동일한 변을 가집니다).

이제 예제를 사용하여 수행해야 하는 작업을 이해해 보겠습니다.

입력

s=5, a=1

출력

10

설명 - 밑변의 제곱수는 s를 a로 나누고 1을 빼서 계산할 수 있습니다. 따라서 밑변의 제곱수 =5/1 – 1 =4입니다.

유사하게 하단 4개의 정사각형이 배치되면 밑변이 있는 새로운 이등변 삼각형을 얻은 다음(s-a) 동일한 절차를 반복하고 단일 정사각형이 맨 위에 놓일 때까지 3개의 정사각형 등을 얻습니다.

C++에서 직각 이등변 삼각형에 들어갈 수 있는 최대 정사각형 수

입력

s=7, a=2

출력

3

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.

  • 최대 정사각형 수를 찾으려면 삼각형의 밑변에서 시작하여 정사각형 수를 찾아야 합니다.

  • 정사각형의 수를 찾기 위해 밑변 s를 정사각형의 한 변으로 나누고 1을 뺍니다 =s/a – 1.

  • 그러면 밑이 (s - a)가 있는 또 다른 이등변 삼각형이 남게 됩니다. 이 삼각형은 아래의 이전 행보다 정사각형을 하나 적게 수용하며 다음과 같은 방식으로 계산할 수 있습니다. -

다음 행의 제곱 =(s - a)/a – 1 =(s/a – a/a) – 1=s/a - 1 - 1 =s/a – 2 =이전 행보다 1제곱 작습니다.

  • 제곱수는 1에 도달할 때까지 계속 감소하므로 기본 행의 제곱수만 구하고 자연수를 더하는 공식을 사용하여 최종 합을 구하면 −

(n) * (n + 1) / 2

이 경우 공식은 − ((s / a) – 1) * (s / a) / 2

가 됩니다.

예시

#include<bits/stdc++.h>
using namespace std;
int Max(int s, int a){
   //formula for calculating maximum squares
   return ((s / a) - 1) * (s / a) / 2;
}
//Main function
int main(){
   int s = 5, a = 1;
   cout <<"Maximum squares possible are: "<<Max(s,a);
   return 0;
}

출력

10