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 = 2
Output: 18
As we see in the image above, total triangles formed are 18.
Input: H = 3, V = 4
Output: 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 trianglesLLI 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 codeint main(){ int h = 2, v = 2; cout << totalTriangles(h, v); return 0;} |
Java
// Java implementation of the approachclass 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 trianglesdef 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 codeh = 2v = 2print(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 trianglesfunction 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 codevar h = 2, v = 2;document.write(totalTriangles(h, v));// This code contributed by shikhasingrajput</script> |
18
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!


… [Trackback]
[…] Read More here to that Topic: geeksforgeeks.org/total-number-of-triangles-formed-when-there-are-h-horizontal-and-v-vertical-lines/ […]