Open In App

Maximum number of 2×2 squares that can be fit inside a right isosceles triangle

Improve
Improve
Like Article
Like
Save
Share
Report

What is the maximum number of squares of size 2×2 units that can be fit in a right-angled isosceles triangle of a given base (in units). 
A side of the square must be parallel to the base of the triangle. 

Examples: 

Input  : 8
Output : 6
Please refer below diagram for explanation.

Input : 7
Output : 3
Recommended Practice

Since the triangle is isosceles, the given base would also be equal to the height. Now in the diagonal part, we would always need an extra length of 2 units in both height and base of the triangle to accommodate a triangle. (The CF and AM segment of the triangle in the image. The part that does not contribute to any square). In the remaining length of base, we can construct length / 2 squares. Since each square is of 2 units, same would be the case of height, there is no need to calculate that again. 
So, for each level of given length we can construct “(length-2)/2” squares. This gives us a base of “(length-2)” above it. Continuing this process to get the no of squares for all available “length-2” height, we can calculate the squares. 

while length > 2
    answer += (length - 2 )/2
    length = length - 2

For more effective way, we can use the formula of sum of AP n * ( n + 1 ) / 2, where n = length – 2 

C++




// C++ program to count number of 2 x 2
// squares in a right isosceles triangle
#include<bits/stdc++.h>
using namespace std;
 
int numberOfSquares(int base)
{
   // removing the extra part we would
   // always need
   base = (base - 2);
 
   // Since each square has base of
   // length of 2
   base = floor(base / 2);
 
   return base * (base + 1)/2;
}
 
// Driver code
int main()
{
   int base = 8;
   cout << numberOfSquares(base);
   return 0;
}
// This code is improved by heroichitesh.


Java




// Java program to count number of 2 x 2
// squares in a right isosceles triangle
 
class Squares
{
  public static  int numberOfSquares(int base)
   {
      // removing the extra part
      // we would always need
      base = (base - 2);
  
      // Since each square has
      // base of length of 2
      base = Math.floorDiv(base, 2);
  
      return base * (base + 1)/2;
   }
  
   // Driver code
   public static void main(String args[])
   {
       
      int base = 8;
      System.out.println(numberOfSquares(base));
   }
}
 
// This code is contributed by Anshika Goyal and improved by heroichitesh.


Python3




# Python3 program to count number
# of 2 x 2 squares in a right
# isosceles triangle
def numberOfSquares(base):
     
    # removing the extra part we would
    # always need
    base = (base - 2)
     
    # Since each square has base of
    # length of 2
    base = base // 2
     
    return base * (base + 1) / 2
     
# Driver code
base = 8
 
print(numberOfSquares(base))
 
# This code is contributed by Anant Agarwal and improved by heroichitesh.


C#




// C# program to count number of 2 x 2
// squares in a right isosceles triangle
using System;
 
class GFG {
     
    public static int numberOfSquares(int _base)
    {
         
        // removing the extra part
        // we would always need
        _base = (_base - 2);
     
        // Since each square has
        // base of length of 2
        _base = _base / 2;
     
        return _base * (_base + 1)/2;
    }
     
    // Driver code
    public static void Main()
    {
         
        int _base = 8;
        Console.WriteLine(numberOfSquares(_base));
    }
}
 
// This code is contributed by anuj_67.


PHP




<?php
// PHP program to count number of 2 x 2
// squares in a right isosceles triangle
 
    function numberOfSquares( $base)
    {
         
        // removing the extra
        // part we would
        // always need
        $base = ($base - 2);
         
        // Since each square
        // has base of
        // length of 2
        $base = intdiv($base, 2);
     
        return $base * ($base + 1)/2;
    }
 
// Driver code
$base = 8;
echo numberOfSquares($base);
 
// This code is contributed by anuj_67 and improved by heroichitesh.
?>


Javascript




<script>
 
    // Program to count number of 2 x 2
    // squares in a right isosceles triangle
     
    function numberOfSquares(base)
    {
         
        // Removing the extra part we would
        // always need
        base = (base - 2);
         
        // Since each square has base of
        // length of 2
        base = Math.floor(base / 2);
         
        return base * (base + 1) / 2;
    }
     
    // Driver code
    let base = 8;
    document.write(numberOfSquares(base));
     
    // This code is contributed by Mayank Tyagi
 
</script>


Output: 

6

Time complexity : O(1)

Auxiliary Space : O(1)

 



Last Updated : 20 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads