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

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:
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 * MC = [ N * (N – 1) / 2 ] * [ M * (M – 1) / 2 ]

Below is implementation of above approach:

## C++

 `// C++ Program to count number of ` `// rectangles formed by N lines ` `// parallel to X axis M lines ` `// parallel to Y axis ` `#include ` `using` `namespace` `std; ` ` `  `// Function to calculate ` `// number of rectangles ` `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 Program ` `int` `main() ` `{ ` ` `  `    ``int` `N = 3; ` ` `  `    ``int` `M = 6; ` ` `  `    ``cout << count_rectangles(N, M); ` `} `

## Java

 `// Java Program to count number of ` `// rectangles formed by N lines ` `// parallel to X axis M lines ` `// parallel to Y axis ` `class` `GFG{ ` ` `  `// Function to calculate ` `// number of rectangles ` `static` `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 Program ` `public` `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

 `# Python3 program to count number of rectangles ` `# formed by N lines parallel to X axis ` `# and M lines parallel to Y axis ` `def` `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 code ` `N ``=` `3` `M ``=` `6` ` `  `print``(count_rectangles(N, M)) ` ` `  `# This code is contributed by himanshu77 `

## C#

 `// C# Program to count number of ` `// rectangles formed by N lines ` `// parallel to X axis M lines ` `// parallel to Y axis ` `using` `System; ` `class` `GFG{ ` ` `  `// Function to calculate ` `// number of rectangles ` `static` `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 Program ` `public` `static` `void` `Main() ` `{ ` `    ``int` `N = 3; ` `    ``int` `M = 6; ` ` `  `    ``Console.Write(count_rectangles(N, M)); ` `} ` `} ` ` `  `// This code is contributed by Code_mech`

Output:

```45
```

Time Complexity: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.