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 :118097

Input :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 = 1andtri_count = 0Next, 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

`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 ` |

**Output:**

118097

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.