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
- As:
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++
// 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
// 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
# 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 Codeif __name__ == "__main__" : N = 9; triangle(maxHeight(N)); # This code is contributed by AnkitRai01 |
C#
// 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 |
Javascript
<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> |
Output:
1 2 3 4 5 6
Time Complexity: O(n2)
Auxiliary Space: O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



