Given a triangle **ABC**. **H** horizontal lines from side **AB** to **AC** (as shown in fig.) and **V** vertical lines from vertex **A** to side **BC** are drawn, the task is to find the total no. of triangles formed.**Examples:**

Input:H = 2, V = 2Output:18

As we see in the image above, total triangles formed are 18.

Input:H = 3, V = 4Output:60

**Approach:** As we see in the images below, we can derive a general formula for above problem:

- If there are only
**h**horizontal lines then total triangles are**(h + 1)**. - If there are only
**v**vertical lines then total triangles are**(v + 1) * (v + 2) / 2.**.

- So, total triangles are
**Triangles formed by horizontal lines * Triangles formed by vertical lines**i.e.**(h + 1) * (( v + 1) * (v + 2) / 2)**.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `#define LLI long long int` `// Function to return total triangles` `LLI totalTriangles(LLI h, LLI v)` `{` ` ` `// Only possible triangle is` ` ` `// the given triangle` ` ` `if` `(h == 0 && v == 0)` ` ` `return` `1;` ` ` `// If only vertical lines are present` ` ` `if` `(h == 0)` ` ` `return` `((v + 1) * (v + 2) / 2);` ` ` `// If only horizontal lines are present` ` ` `if` `(v == 0)` ` ` `return` `(h + 1);` ` ` `// Return total triangles` ` ` `LLI Total = (h + 1) * ((v + 1) * (v + 2) / 2);` ` ` `return` `Total;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `h = 2, v = 2;` ` ` `cout << totalTriangles(h, v);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `class` `GFG {` ` ` `// Function to return total triangles` ` ` `public` `static` `int` `totalTriangles(` `int` `h, ` `int` `v)` ` ` `{` ` ` `// Only possible triangle is` ` ` `// the given triangle` ` ` `if` `(h == ` `0` `&& v == ` `0` `)` ` ` `return` `1` `;` ` ` `// If only vertical lines are present` ` ` `if` `(h == ` `0` `)` ` ` `return` `((v + ` `1` `) * (v + ` `2` `) / ` `2` `);` ` ` `// If only horizontal lines are present` ` ` `if` `(v == ` `0` `)` ` ` `return` `(h + ` `1` `);` ` ` `// Return total triangles` ` ` `int` `total = (h + ` `1` `) * ((v + ` `1` `) * (v + ` `2` `) / ` `2` `);` ` ` `return` `total;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `h = ` `2` `, v = ` `2` `;` ` ` `System.out.print(totalTriangles(h, v));` ` ` `}` `}` |

## C#

`// C# implementation of the approach` `using` `System;` `class` `GFG` `{` ` ` `// Function to return total triangles` ` ` `public` `static` `int` `totalTriangles(` `int` `h, ` `int` `v)` ` ` `{` ` ` `// Only possible triangle is` ` ` `// the given triangle` ` ` `if` `(h == 0 && v == 0)` ` ` `return` `1;` ` ` `// If only vertical lines are present` ` ` `if` `(h == 0)` ` ` `return` `((v + 1) * (v + 2) / 2);` ` ` `// If only horizontal lines are present` ` ` `if` `(v == 0)` ` ` `return` `(h + 1);` ` ` `// Return total triangles` ` ` `int` `total = (h + 1) * ((v + 1) * (v + 2) / 2);` ` ` `return` `total;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `h = 2, v = 2;` ` ` `Console.Write(totalTriangles(h, v));` ` ` `}` `}` `// This code is contributed by Ryuga` |

## Python3

`# Python3 implementation of the approach` `# Function to return total triangles` `def` `totalTriangles(h, v):` ` ` ` ` `# Only possible triangle is` ` ` `# the given triangle` ` ` `if` `(h ` `=` `=` `0` `and` `v ` `=` `=` `0` `):` ` ` `return` `1` ` ` `# If only vertical lines are present` ` ` `if` `(h ` `=` `=` `0` `):` ` ` `return` `((v ` `+` `1` `) ` `*` `(v ` `+` `2` `) ` `/` `2` `)` ` ` `# If only horizontal lines are present` ` ` `if` `(v ` `=` `=` `0` `):` ` ` `return` `(h ` `+` `1` `)` ` ` `# Return total triangles` ` ` `total ` `=` `(h ` `+` `1` `) ` `*` `((v ` `+` `1` `) ` `*` `(v ` `+` `2` `) ` `/` `2` `)` ` ` `return` `total` `# Driver code` `h ` `=` `2` `v ` `=` `2` `print` `(` `int` `(totalTriangles(h, v)))` |

## PHP

`<?php` `// PHP implementation of the above approach` `// Function to return total triangles` `function` `totalTriangles(` `$h` `, ` `$v` `)` `{` ` ` `// Only possible triangle is` ` ` `// the given triangle` ` ` `if` `(` `$h` `== 0 && ` `$v` `== 0)` ` ` `return` `1;` ` ` `// If only vertical lines are present` ` ` `if` `(` `$h` `== 0)` ` ` `return` `((` `$v` `+ 1) * (` `$v` `+ 2) / 2);` ` ` `// If only horizontal lines are present` ` ` `if` `(` `$v` `== 0)` ` ` `return` `(` `$h` `+ 1);` ` ` `// Return total triangles` ` ` `$Total` `= (` `$h` `+ 1) * ((` `$v` `+ 1) *` ` ` `(` `$v` `+ 2) / 2);` ` ` `return` `$Total` `;` `}` `// Driver code` `$h` `= 2;` `$v` `= 2;` `echo` `totalTriangles(` `$h` `, ` `$v` `);` `// This code is contributed by Arnab Kundu` `?>` |

## Javascript

`<script>` `// javascript implementation of the approach ` `// Function to return total triangles` `function` `totalTriangles(h , v)` `{` ` ` `// Only possible triangle is` ` ` `// the given triangle` ` ` `if` `(h == 0 && v == 0)` ` ` `return` `1;` ` ` `// If only vertical lines are present` ` ` `if` `(h == 0)` ` ` `return` `((v + 1) * (v + 2) / 2);` ` ` `// If only horizontal lines are present` ` ` `if` `(v == 0)` ` ` `return` `(h + 1);` ` ` `// Return total triangles` ` ` `var` `total = (h + 1) * ((v + 1) * (v + 2) / 2);` ` ` `return` `total;` `}` `// Driver code` `var` `h = 2, v = 2;` `document.write(totalTriangles(h, v));` `// This code contributed by shikhasingrajput` `</script>` |

**Output:**

18

**Time Complexity:** O(1) **Auxiliary Space:** 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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**