Printing the Triangle Pattern using last term N

Given a number N which represents the last term of the Triangle Pattern. The task is to print the Triangle Pattern from 1 to N, such that each row is complete.

Triangle Pattern is given as:

   1
  2 3
 4 5 6
7 8 9 10
.
.

Examples:



Input: N = 3
Output:
 1
2 3

Input: N = 7
Output:
   1
  2 3
 4 5 6

7 will not be printed as 
it would result in an incomplete row

Approach:

  • Find the number of complete rows from the given last term N.
    • As:
      For Max Height = 1, the last term would be 1
      For Max Height = 2, the last term would be 3
      For Max Height = 3, the last term would be 6
    • So the last term forms a pattern: 1, 3, 6, 10, 15,…
    • Therefore, the n-th term of series 1, 3, 6, 10, 15,…
      A(n) = 1 + 2 + 3 + 4… + (n – 1) + n
      = n(n + 1) / 2

      i.e A(n) is the sum of First n natural numbers.

    • So in
      A(n) = n(n + 1) / 2
      A(n) represents the last term (as per our problem),
      and n represents the max height of the Triangle
      
    • Hence this can be seen as:
      Last term = height (height + 1) / 2
    • Therefore,
      height = (-1 + sqrt(1 + 8*lastTerm)) / 2
  • After finding the max height, the triangle pattern can be easily printed.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code for printing the
// Triangle Pattern using last term N
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to demonstrate printing pattern
void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
  
    // character to be printed
    int ch = 1;
  
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++) {
  
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            cout << " ";
  
        // decrementing k after each loop
        k = k - 1;
  
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++) {
            // printing stars
            cout << ch++ << " ";
        }
  
        // ending line after each row
        cout << endl;
    }
}
  
// Function to find the max height
// or the number of lines
// in the triangle pattern
int maxHeight(int n)
{
    return (((int)sqrt(1 + 8.0 * n)) - 1) / 2;
}
  
// Driver Function
int main()
{
    int N = 9;
    triangle(maxHeight(N));
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code for printing the
// Triangle Pattern using last term N
import java.util.*;
  
class GFG
{
  
// Function to demonstrate printing pattern
static void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
  
    // character to be printed
    int ch = 1;
  
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++) 
    {
  
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            System.out.print(" ");
  
        // decrementing k after each loop
        k = k - 1;
  
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++) 
        {
            // printing stars
            System.out.print(ch++ + " ");
        }
  
        // ending line after each row
        System.out.println();
    }
}
  
// Function to find the max height
// or the number of lines
// in the triangle pattern
static int maxHeight(int n)
{
    return (((int)Math.sqrt(1 + 8.0 * n)) - 1) / 2;
}
  
// Driver Code
public static void main(String[] args)
{
    int N = 9;
    triangle(maxHeight(N));
}
}
  
// This code is contributed by PrinciRaj1992

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code for printing the 
# Triangle Pattern using last term N 
from math import sqrt
  
# Function to demonstrate printing pattern 
def triangle(n) : 
  
    # number of spaces 
    k = 2 * n - 2
  
    # character to be printed 
    ch = 1
  
    # outer loop to handle number of rows 
    # n in this case 
    for i in range(n) :
  
        # inner loop to handle number spaces 
        # values changing acc. to requirement 
        for j in range(k) :
            print(" ", end = ""); 
  
        # decrementing k after each loop 
        k = k - 1
  
        # inner loop to handle number of columns 
        # values changing acc. to outer loop 
        for j in range(i + 1) :
              
            # printing stars 
            print(ch, end = " "); 
            ch += 1;
              
        # ending line after each row
        print() 
  
# Function to find the max height 
# or the number of lines 
# in the triangle pattern 
def maxHeight(n) : 
    ans = (sqrt(1 + 8.0 * n) - 1) // 2;
    return int(ans); 
  
# Driver Code
if __name__ == "__main__"
  
    N = 9
    triangle(maxHeight(N)); 
      
# This code is contributed by AnkitRai01

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code for printing the
// Triangle Pattern using last term N
using System;
      
class GFG
{
  
// Function to demonstrate printing pattern
static void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
  
    // character to be printed
    int ch = 1;
  
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++) 
    {
  
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            Console.Write(" ");
  
        // decrementing k after each loop
        k = k - 1;
  
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++) 
        {
            // printing stars
            Console.Write(ch++ + " ");
        }
  
        // ending line after each row
        Console.WriteLine();
    }
}
  
// Function to find the max height
// or the number of lines
// in the triangle pattern
static int maxHeight(int n)
{
    return (((int)Math.Sqrt(1 + 8.0 * n)) - 1) / 2;
}
  
// Driver Code
public static void Main(String[] args)
{
    int N = 9;
    triangle(maxHeight(N));
}
}
  
// This code is contributed by Princi Singh

chevron_right


Output:

    1 
   2 3 
  4 5 6


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.