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 = 6Output:45Explanation:

There are total 45 rectangles possible with 3 lines parallel to x axis and 6 lines parallel to y axis.Input:N = 2, M = 4Output:6Explanation:

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 =
^{N}C_{2}_{ }and the Number of ways to select two lines parallel to Y axis =^{M}C_{2}_{ }. - So the total number of rectangles =
=^{N}C_{2 * }^{M}C_{2 }**[ 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 <bits/stdc++.h> ` `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); ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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` |

*chevron_right*

*filter_none*

**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.