# 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 = 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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the

DSA Self Paced Courseat a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please referComplete Interview Preparation Course.In case you wish to attend

live classeswith experts, please referDSA Live Classes for Working ProfessionalsandCompetitive Programming Live for Students.

**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);` `}` |

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

## Javascript

`<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 rectangles` `function` `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>` |

**Output:**

45

**Time Complexity: **O(1)