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> |
Output:
118097
Time Complexity: O(n)
Auxiliary Space: O(1)