Given a m x n rectangle, how many squares are there in it?
Input: m = 2, n = 2 Output: 5 There are 4 squares of size 1x1 + 1 square of size 2x2. Input: m = 4, n = 3 Output: 20 There are 12 squares of size 1x1 + 6 squares of size 2x2 + 2 squares of size 3x3.
Let us first solve this problem for m = n, i.e., for a square:
For m = n = 1, output: 1
For m = n = 2, output: 4 + 1 [4 of size 1×1 + 1 of size 2×2]
For m = n = 3, output: 9 + 4 + 1 [4 of size 1×1 + 4 of size 2×2 + 1 of size 3×3]
For m = n = 4, output 16 + 9 + 4 + 1 [16 of size 1×1 + 9 of size 2×2 + 4 of size 3×3 + 1 of size 4×4]
In general, it seems to be n^2 + (n-1)^2 + … 1 = n(n+1)(2n+1)/6
Let us solve this problem when m may not be equal to n:
Let us assume that m <= n
From above explanation, we know that number of squares in a m x m matrix is m(m+1)(2m+1)/6
What happens when we add a column, i.e., what is the number of squares in m x (m+1) matrix?
When we add a column, number of squares increased is m + (m-1) + … + 3 + 2 + 1
[m squares of size 1×1 + (m-1) squares of size 2×2 + … + 1 square of size m x m]
Which is equal to m(m+1)/2
So when we add (n-m) columns, total number of squares increased is (n-m)*m(m+1)/2.
So total number of squares is m(m+1)(2m+1)/6 + (n-m)*m(m+1)/2.
Using same logic we can prove when n <= m.
So, in general,
Total number of squares = m x (m+1) x (2m+1)/6 + (n-m) x m x (m+1)/2 when n is larger dimension
Using above logic for rectangle, we can also prove that number of squares in a square is n(n+1)(2n+1)/6
Below is implementation of above formula.
Count of Squares is 20
Alternate Solution :
Let us take m = 2, n = 3;
The number of squares of side 1 will be 6 as there will be two cases one as squares of 1-unit sides along the horizontal(2) and second case as squares of 1-unit sides along the vertical(3). that give us 2*3 = 6 squares.
When the side is 2 units, one case will be as squares of side of 2 units along only one place horizontally and second case as two places vertically. So number of squares=2
So we can deduce that
Number of squares of size 1*1 will be m*n
Number of squares of size 2*2 will be (n-1)(m-1)
So like this the number of squares of size n will be 1*(m-n+1)
The final formula for total number of squares will be n*(n+1)(3m-n+1)/6
Thanks to Pranav for providing this alternate solution.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Number of squares of maximum area in a rectangle
- Number of squares of side length required to cover an N*M rectangle
- Minimum squares to evenly cut a rectangle
- Minimum squares to cover a rectangle
- Count number less than N which are product of perfect squares
- Count the number of rhombi possible inside a rectangle of given size
- Program to count number of distinct Squares and Cubes upto N
- Count the total number of squares that can be visited by Bishop in one move
- Count pairs (a, b) whose sum of squares is N (a^2 + b^2 = N)
- Count Magic squares in a grid
- Count squares with odd side length in Chessboard
- Minimum number of squares whose sum equals to given number n
- Ratio of area of a rectangle with the rectangle inscribed in it
- Largest subset of rectangles such that no rectangle fit in any other rectangle
- Check whether a number can be represented by sum of two squares