Given an equilateral triangle, the task is to compute the total number of triangles after performing the following operation N times.
For every operation, the uncolored triangles are taken and divided into 4 equal equilateral triangles. Every inverted triangle formed is colored. Refer to the below figure for more details.
For N=1 the triangle formed is:
For N=2 the triangle formed is:
Examples:
Input :N = 10
Output : 118097Input : N = 2
Output : 17
Approach:
- At every operation, 3 uncolored triangles, 1 colored triangle, and the triangle itself is formed
- On writing the above statement mathematically; count of triangles at Nth move = 3 * count of triangles at (N-1)th move + 2
- Therefore, initializing a variable curr = 1 and tri_count = 0
- Next, a loop is iterated from 1 to N
- For every iteration, the operation mentioned above is performed.
- Finally, the tri_count is returned
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h> using namespace std; // function to return the // total no.of Triangles int CountTriangles( int n) { int curr = 1; int Tri_count = 0; for ( int i = 1; i <= n; i++) { // For every subtriangle formed // there are possibilities of // generating (curr*3)+2 Tri_count = (curr * 3) + 2; // Changing the curr value to Tri_count curr = Tri_count; } return Tri_count; } // driver code int main() { int n = 10; cout << CountTriangles(n); return 0; } |
Java
import java.io.*; public class Gfg { // Method to return the // total no.of Triangles public static int CountTriangles( int n) { int curr = 1 ; int Tri_count = 0 ; for ( int i = 1 ; i <= n; i++) { // For every subtriangle formed // there are possibilities of // generating (curr*3)+2 Tri_count = (curr * 3 ) + 2 ; // Changing the curr value to Tri_count curr = Tri_count; } return Tri_count; } // driver code public static void main(String[] args) { int n = 10 ; System.out.println(CountTriangles(n)); } } |
Python
# Function to return the # total no.of Triangles def countTriangles(n): curr = 1 Tri_count = 0 for i in range ( 1 , n + 1 ): # For every subtriangle formed # there are possibilities of # generating (curr * 3)+2 Tri_count = (curr * 3 ) + 2 # Changing the curr value to Tri_count curr = Tri_count return Tri_count n = 10 print (countTriangles(n)) |
C#
using System; class Gfg { // Method to return the // total no.of Triangles public static int CountTriangles( int n) { int curr = 1; int Tri_count = 0; for ( int i = 1; i <= n; i++) { // For every subtriangle formed // there are possibilities of // generating (curr*3)+2 Tri_count = (curr * 3) + 2; // Changing the curr value to Tri_count curr = Tri_count; } return Tri_count; } // Driver code public static void Main(String[] args) { int n = 10; Console.WriteLine(CountTriangles(n)); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Method to return the // total no.of Triangles function CountTriangles(n) { var curr = 1; var Tri_count = 0; for (i = 1; i <= n; i++) { // For every subtriangle formed // there are possibilities of // generating (curr*3)+2 Tri_count = (curr * 3) + 2; // Changing the curr value to Tri_count curr = Tri_count; } return Tri_count; } // driver code var n = 10; document.write(CountTriangles(n)); // This code is contributed by aashish1995 </script> |
118097
Time Complexity: O(n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!