Printing the Triangle Pattern using last term N

19 Mar, 2022
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 6So 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) / 2i.e A(n) is the sum of First n natural numbers.So in 
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) / 2i.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++
Java
Python3
C#
Javascript
// C++ code for printing the// Triangle Pattern using last term N #include <bits/stdc++.h>using namespace std; // Function to demonstrate printing patternvoid 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 patternint maxHeight(int n){    return (((int)sqrt(1 + 8.0 * n)) - 1) / 2;} // Driver Functionint main(){    int N = 9;    triangle(maxHeight(N));    return 0;}
// Java code for printing the// Triangle Pattern using last term Nimport java.util.*; class GFG{ // Function to demonstrate printing patternstatic 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 patternstatic int maxHeight(int n){    return (((int)Math.sqrt(1 + 8.0 * n)) - 1) / 2;} // Driver Codepublic static void main(String[] args){    int N = 9;    triangle(maxHeight(N));}} // This code is contributed by PrinciRaj1992
# Python3 code for printing the# Triangle Pattern using last term Nfrom math import sqrt # Function to demonstrate printing patterndef 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 patterndef maxHeight(n) :    ans = (sqrt(1 + 8.0 * n) - 1) // 2;    return int(ans); # Driver Codeif __name__ == "__main__" :     N = 9;    triangle(maxHeight(N));     # This code is contributed by AnkitRai01
// C# code for printing the// Triangle Pattern using last term Nusing System;     class GFG{ // Function to demonstrate printing patternstatic 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 patternstatic int maxHeight(int n){    return (((int)Math.Sqrt(1 + 8.0 * n)) - 1) / 2;} // Driver Codepublic static void Main(String[] args){    int N = 9;    triangle(maxHeight(N));}} // This code is contributed by Princi Singh
<script>// Javascript code for printing the// Triangle Pattern using last term N // Function to demonstrate printing patternfunction triangle(n){     // number of spaces    var k = 2 * n - 2;     // character to be printed    var ch = 1;     // outer loop to handle number of rows    // n in this case    for (var i = 0; i < n; i++) {         // inner loop to handle number spaces        // values changing acc. to requirement        for (var j = 0; j < k; j++)            document.write(" ");         // decrementing k after each loop        k = k - 1;         // inner loop to handle number of columns        // values changing acc. to outer loop        for (var j = 0; j <= i; j++) {            // printing stars            document.write(ch++ + " ");        }         // ending line after each row        document.write("<br>");    }} // Function to find the max height// or the number of lines// in the triangle patternfunction maxHeight(n){    return parseInt(((parseInt(Math.sqrt(1 + 8.0 * n))) - 1) / 2);} // Driver Functionvar N = 9;triangle(maxHeight(N)); // This code is contributed by noob2000.</script>
    1 
   2 3 
  4 5 6
 
Time Complexity: O(n2)
Auxiliary Space: O(1)
ankthon
princiraj1992
princi singh
noob2000
subham348
pattern-printing
Mathematical
Mathematical
pattern-printing
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.