L>=B가 되도록 길이가 L이고 너비가 B인 직사각형이 제공됩니다. 목표는 LXB 크기의 직사각형이 수용할 수 있는 정사각형의 수를 찾는 것입니다.
위 그림은 3 X 2 크기의 직사각형을 보여줍니다. 2, 2X2 정사각형과 6,1X1 정사각형이 있습니다.
총 제곱=6+2=8.
-
LXB 크기의 모든 직사각형에는 1X1 정사각형의 L*B 수가 있습니다.
-
가장 큰 사각형은 BXB 크기입니다.
-
L=B=1인 경우 제곱 =1입니다.
-
L=B=2의 경우 제곱 =1 + 4 =5. ( 2X2의 1, 1X1의 4)
-
L=B=3의 경우 제곱 =1 + 4 + 9 =14. ( 3X3의 1, 2X2의 4, 1X1의 9)
-
L=B=4의 경우 제곱 =1 + 4 + 9 + 16 =30 ( 4X4의 1, 3X3의 4, 2X2의 9, 1X1의 16)
-
……………….
-
모든 BXB 직사각형에 대해 정사각형의 수는
입니다.
for ( i=1 to B ) No. of squares + = i*i.
L>B일 때 더 많은 사각형이 추가됩니다. L=B+1일 때(B보다 1개의 추가 열). 그러면 추가된 제곱은 L + ( L-1) + ...+3+2+1 =L(L+1)/2
가 됩니다.따라서 추가 L-B 열의 경우 추가되는 사각형은 ( L-B ) * (B)(B+1)/2
가 됩니다.-
총 제곱은 BXB + (L-B) * (L)(L+1)/2의 제곱입니다.
-
8단계에서 계열(1 + 4 + 9 +......BXB)에 대해 공식 B(B+1)(2B+1)/6을 사용할 수도 있습니다.
예를 들어 이해합시다.
입력 - L=4, B=2
출력 − 직사각형의 정사각형 개수 − 11
설명 − 1X1의 정사각형 8개와 2X2의 정사각형 3개.
입력 - L=3, B=3
출력 − 직사각형의 정사각형 개수 − 14
설명 − 1X1의 9개 정사각형, 2X2의 4개 및 3X3의 1개.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
직사각형의 크기에 대해 길이와 너비를 정수로 취합니다.
-
numofSquares(int l, int b) 함수는 치수를 가져와서 크기가 lXb인 직사각형의 정사각형 수를 반환합니다.
-
가장 큰 사각형 bXb의 경우. for 루프를 1에서 b까지 사용하고 각 i*i를 정사각형에 추가합니다.
-
이제 l>b인 경우. 새로 추가된 제곱은 (l-b)(b)(b+1)/2입니다. 이것을 사각형에 추가하십시오.
-
원하는 결과로 사각형을 반환합니다.
참고 − 길이>=너비
유지예시
#include<iostream> using namespace std; int numofSquares(int l, int b){ int squares=0; for(int i=1;i<=b;i++) //squares inside biggest square of size breadth X breadth{ squares += i*i; } squares+=(l-b)*b*(b+1)/2; return squares; } int main(){ int length = 5, breadth = 4; //keep length always >= breadth cout << "Count of squares is :"<< numofSquares(length,breadth); }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of squares is :40