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 (N1)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:
#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;
} 
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));
}
} 
# 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))

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 
118097
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a studentfriendly price and become industry ready.
Recommended Posts:
 Count of triangles with total n points with m collinear
 Total number of triangles formed when there are H horizontal and V vertical lines
 Number of triangles after N moves
 Total ways of choosing X men and Y women from a total of M men and W women
 Count of total Heads and Tails after N flips in a coin
 Count the number of possible triangles
 Count number of right triangles possible with a given perimeter
 Count number of triangles possible for the given sides range
 Count number of Unique Triangles using Operator overloading
 Count number of unique Triangles using STL  Set 1 (Using set)
 Count number of triangles possible with length of sides not exceeding N
 Count number of triangles cut by the given horizontal and vertical line segments
 Total money to be paid after traveling the given number of hours
 Total number of days taken to complete the task if after certain days one person leaves
 Substring that contains all lowercase alphabets after performing the given operation
 Minimum possible sum of array elements after performing the given operation
 Find the index which is the last to be reduced to zero after performing a given operation
 Sum of the updated array after performing the given operation
 Minimum possible sum of array elements after performing the given operation
 Count of Equilateral Triangles of unit length possible from a given Hexagon
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : 29AjayKumar