Count of rectangles possible from N and M straight lines parallel to X and Y axis respectively - GeeksforGeeks

10 May, 2021
Given two integers N and M, where N straight lines are parallel to the X-axis and M straight lines are parallel to Y-axis, the task is to calculate the number of rectangles that can be formed by these lines.Examples:  
Input: N = 3, M = 6 Output: 45 Explanation: There are total 45 rectangles possible with 3 lines parallel to x axis and 6 lines parallel to y axis.Input: N = 2, M = 4 Output: 6 Explanation: There are total 6 rectangles possible with 2 lines parallel to x axis and 4 lines parallel to y axis.  
 
Approach: To solve the problem mentioned above we need to observe that a rectangle is formed by 4 straight lines in which opposite sides are parallel and the angle between any two sides is 90. Hence, for every rectangle, two sides need to be parallel to X-axis and the other two sides need to be parallel to Y-axis.  
Number of ways to select two lines parallel to X axis = NC2 and the Number of ways to select two lines parallel to Y axis = MC2 .
So the total number of rectangles  = NC2 * MC2  = [ N * (N – 1) / 2 ] * [ M * (M – 1) / 2 ]
Below is implementation of above approach:  
C++
Java
Python3
C#
Javascript
// C++ Program to count number of// rectangles formed by N lines// parallel to X axis M lines// parallel to Y axis#include <bits/stdc++.h>using namespace std; // Function to calculate// number of rectanglesint count_rectangles(int N, int M){    // Total number of ways to    // select two lines    // parallel to X axis    int p_x = (N * (N - 1)) / 2;     // Total number of ways    // to select two lines    // parallel to Y axis    int p_y = (M * (M - 1)) / 2;     // Total number of rectangles    return p_x * p_y;} // Driver Programint main(){     int N = 3;     int M = 6;     cout << count_rectangles(N, M);}
// Java Program to count number of// rectangles formed by N lines// parallel to X axis M lines// parallel to Y axisclass GFG{ // Function to calculate// number of rectanglesstatic int count_rectangles(int N, int M){    // Total number of ways to    // select two lines    // parallel to X axis    int p_x = (N * (N - 1)) / 2;     // Total number of ways    // to select two lines    // parallel to Y axis    int p_y = (M * (M - 1)) / 2;     // Total number of rectangles    return p_x * p_y;} // Driver Programpublic static void main(String[] args){    int N = 3;    int M = 6;     System.out.print(count_rectangles(N, M));}} // This code is contributed by sapnasingh4991
# Python3 program to count number of rectangles# formed by N lines parallel to X axis# and M lines parallel to Y axisdef count_rectangles(N, M):     # Total number of ways to select    # two lines parallel to X axis    p_x = (N * (N - 1)) // 2     # Total number of ways to select    # two lines parallel to Y axis    p_y = (M * (M - 1)) // 2     # Total number of rectangles    return p_x * p_y # Driver codeN = 3M = 6 print(count_rectangles(N, M)) # This code is contributed by himanshu77
// C# Program to count number of// rectangles formed by N lines// parallel to X axis M lines// parallel to Y axisusing System;class GFG{ // Function to calculate// number of rectanglesstatic int count_rectangles(int N, int M){    // Total number of ways to    // select two lines    // parallel to X axis    int p_x = (N * (N - 1)) / 2;     // Total number of ways    // to select two lines    // parallel to Y axis    int p_y = (M * (M - 1)) / 2;     // Total number of rectangles    return p_x * p_y;} // Driver Programpublic static void Main(){    int N = 3;    int M = 6;     Console.Write(count_rectangles(N, M));}} // This code is contributed by Code_mech
<script> // JavaScript Program to count number of// rectangles formed by N lines// parallel to X axis M lines// parallel to Y axis // Function to calculate// number of rectanglesfunction count_rectangles(N, M){    // Total number of ways to    // select two lines    // parallel to X axis    let p_x = (N * (N - 1)) / 2;       // Total number of ways    // to select two lines    // parallel to Y axis    let p_y = (M * (M - 1)) / 2;       // Total number of rectangles    return p_x * p_y;} // Driver Code     let N = 3;    let M = 6;       document.write(count_rectangles(N, M));         </script>
  
45
 
Time Complexity: O(1)  
sapnasingh4991
Code_Mech
himanshu77
splevel62
square-rectangle
Combinatorial
Geometric
Mathematical
Mathematical
Combinatorial
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Combinational Sum
Count ways to reach the nth stair using step 1, 2 or 3
Count of subsets with sum equal to X
Find the Number of Permutations that satisfy the given condition in an array
Print all possible strings of length k that can be formed from a set of n characters
Circle and Lattice Points
Closest Pair of Points using Divide and Conquer algorithm
How to check if two given line segments intersect?
How to check if a given point lies inside or outside a polygon?
Program for distance between two points on earth