Find the number of rectangles of size 2x1 which can be placed inside a rectangle of size n x m in Python

Finding the number of 2x1 rectangles that can be placed inside an n x m rectangle is a classic combinatorial problem. We need to consider different cases based on whether the dimensions are even or odd.

Problem Understanding

Given a rectangle of size n x m, we want to find the maximum number of non-overlapping 2x1 rectangles that can be placed inside it. The constraints are ?

  • No two small rectangles can overlap
  • Every small rectangle must lie completely inside the larger one
  • Small rectangles can touch the edges of the larger rectangle
n x m rectangle 2x1 rectangles inside

Algorithm

The solution depends on the parity (even/odd nature) of the dimensions ?

  • If n is even: We can place (n/2) × m rectangles
  • If m is even: We can place (m/2) × n rectangles
  • If both are odd: We can place (n×m-1)/2 rectangles

Implementation

def count_rectangles(n, m):
    if n % 2 == 0:
        return (n // 2) * m
    elif m % 2 == 0:
        return (m // 2) * n
    return (n * m - 1) // 2

# Test with the example
n = 3
m = 3
result = count_rectangles(n, m)
print(f"For a {n}x{m} rectangle, we can place {result} rectangles of size 2x1")
For a 3x3 rectangle, we can place 4 rectangles of size 2x1

Testing Different Cases

def count_rectangles(n, m):
    if n % 2 == 0:
        return (n // 2) * m
    elif m % 2 == 0:
        return (m // 2) * n
    return (n * m - 1) // 2

# Test various cases
test_cases = [(2, 3), (4, 4), (3, 5), (6, 2)]

for n, m in test_cases:
    result = count_rectangles(n, m)
    print(f"{n}x{m} rectangle can fit {result} rectangles of size 2x1")
2x3 rectangle can fit 3 rectangles of size 2x1
4x4 rectangle can fit 8 rectangles of size 2x1
3x5 rectangle can fit 7 rectangles of size 2x1
6x2 rectangle can fit 6 rectangles of size 2x1

How It Works

The algorithm works by analyzing the area coverage ?

  • Even dimension case: When one dimension is even, we can perfectly tile that direction
  • Both odd case: We lose exactly one unit square that cannot be covered by 2x1 rectangles

Conclusion

This problem demonstrates how parity affects tiling solutions. The key insight is that 2x1 rectangles cover exactly 2 unit squares, so odd total areas will always have one uncovered square.

Updated on: 2026-03-25T09:52:50+05:30

286 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements