Given an integer N, the task is to print the pattern below for the given value of N.
For N = 5, below is the given pattern:
Examples:
Input: N = 4
Output:
1020304017018019020
**50607014015016
****809012013
******10011Input: N = 3
Output:
10203010011012
**4050809
****607
Approach: The idea to understand the logic behind the given pattern is stated below:
By looking closely, we see that by replacing in-between zeroes with spaces, the pattern can be seen more clearly. The pattern is further divided into three different patterns.
- Case 1: Asterisk (*) character pattern follows a sequence from 0 and adds two more asterisks in each row, where the row is equal to N.
- Case 2: In this part, the pattern is very simple to understand. i.e the number of columns and rows will be equal to N and follows a sequence like 1, 2, 3, 4, 5…
- Case 3: Follow-up or bottom-up sequence is the interesting part where the numbers are represented from bottom to top.
Below is the implementation of the above approach:
// C++ implementation to print // the given pattern #include <bits/stdc++.h> using namespace std;
// Function to find the sum of // N integers from 1 to N int sum( int n)
{ return n * (n - 1) / 2;
} // Function to print the given // pattern void BSpattern( int N)
{ int Val = 0, Pthree = 0,
cnt = 0, initial;
string s = "**" ;
// Iterate over [0, N - 1]
for ( int i = 0; i < N; i++) {
cnt = 0;
// Sub-Pattern - 1
if (i > 0) {
cout << s;
s += "**" ;
}
// Sub-Pattern - 2
for ( int j = i; j < N; j++) {
// Count the number of element
// in rows and sub-pattern 2 and 3
// will have same rows
if (i > 0) {
cnt++;
}
// Increment Val to print the
// series 1, 2, 3, 4, 5 ...
cout << ++Val;
cout << 0;
}
// To get the first element of sub
// pattern 3 find the sum of first N-1
// elements first N-1 elements in row1
// previous of Sub-Pattern 2
// Finally, add the (N-1)th element
// i.e., 5 and increment it by 1
if (i == 0) {
int Sumbeforelast = sum(Val) * 2;
Pthree = Val + Sumbeforelast + 1;
initial = Pthree;
}
// Initial is used to give the initial
// value of the row in Sub-Pattern 3
initial = initial - cnt;
Pthree = initial;
// Sub-Pattern 3
for ( int k = i; k < N; k++) {
cout << Pthree++;
// Skip printing zero at the last
if (k != N - 1) {
cout << 0;
}
}
cout << "\n" ;
}
} // Driver Code int main()
{ // Given N
int N = 5;
// Function Call
BSpattern(N);
return 0;
} |
// Java implementation to print // the given pattern import java.util.*;
class GFG{
// Function to find the sum of // N integers from 1 to N static int sum( int n)
{ return n * (n - 1 ) / 2 ;
} // Function to print the given // pattern static void BSpattern( int N)
{ int Val = 0 , Pthree = 0 ,
cnt = 0 , initial = - 1 ;
String s = "**" ;
// Iterate over [0, N - 1]
for ( int i = 0 ; i < N; i++)
{
cnt = 0 ;
// Sub-Pattern - 1
if (i > 0 )
{
System.out.print(s);
s += "**" ;
}
// Sub-Pattern - 2
for ( int j = i; j < N; j++)
{
// Count the number of element
// in rows and sub-pattern 2
// and 3 will have same rows
if (i > 0 )
{
cnt++;
}
// Increment Val to print the
// series 1, 2, 3, 4, 5 ...
System.out.print(++Val);
System.out.print( "0" );
}
// To get the first element of sub
// pattern 3 find the sum of first N-1
// elements first N-1 elements in row1
// previous of Sub-Pattern 2
// Finally, add the (N-1)th element
// i.e., 5 and increment it by 1
if (i == 0 )
{
int Sumbeforelast = sum(Val) * 2 ;
Pthree = Val + Sumbeforelast + 1 ;
initial = Pthree;
}
// Initial is used to give the initial
// value of the row in Sub-Pattern 3
initial = initial - cnt;
Pthree = initial;
// Sub-Pattern 3
for ( int k = i; k < N; k++)
{
System.out.print(Pthree++);
// Skip printing zero at the last
if (k != N - 1 )
{
System.out.print( "0" );
}
}
System.out.println();
}
} // Driver code public static void main(String[] args)
{ // Given N
int N = 5 ;
// Function call
BSpattern(N);
} } // This code is contributed by offbeat |
# Python3 implementation to print # the given pattern # Function to find the sum of # N integers from 1 to N def sum (n):
return n * (n - 1 ) / / 2
# Function to print the given # pattern def BSpattern(N):
Val = 0
Pthree = 0 ,
cnt = 0 initial = - 1
s = "**"
# Iterate over [0, N - 1]
for i in range (N):
cnt = 0
# Sub-Pattern - 1
if (i > 0 ):
print (s, end = "")
s + = "**"
# Sub-Pattern - 2
for j in range (i, N):
# Count the number of element
# in rows and sub-pattern 2 and 3
# will have same rows
if (i > 0 ):
cnt + = 1
# Increment Val to print the
# series 1, 2, 3, 4, 5 ...
Val + = 1
print (Val, end = "")
print ( 0 , end = "")
# To get the first element of sub
# pattern 3 find the sum of first N-1
# elements first N-1 elements in row1
# previous of Sub-Pattern 2
# Finally, add the (N-1)th element
# i.e., 5 and increment it by 1
if (i = = 0 ):
Sumbeforelast = sum (Val) * 2
Pthree = Val + Sumbeforelast + 1
initial = Pthree
# Initial is used to give the initial
# value of the row in Sub-Pattern 3
initial = initial - cnt
Pthree = initial
# Sub-Pattern 3
for k in range (i, N):
print (Pthree, end = "")
Pthree + = 1
# Skip printing zero at the last
if (k ! = N - 1 ):
print ( 0 , end = "")
print ()
# Driver Code # Given N N = 5
# Function call BSpattern(N) # This code is contributed by sanjoy_62 |
// C# implementation to print // the given pattern using System;
class GFG{
// Function to find the sum of // N integers from 1 to N static int sum( int n)
{ return n * (n - 1) / 2;
} // Function to print the given // pattern static void BSpattern( int N)
{ int Val = 0, Pthree = 0,
cnt = 0, initial = -1;
String s = "**" ;
// Iterate over [0, N - 1]
for ( int i = 0; i < N; i++)
{
cnt = 0;
// Sub-Pattern - 1
if (i > 0)
{
Console.Write(s);
s += "**" ;
}
// Sub-Pattern - 2
for ( int j = i; j < N; j++)
{
// Count the number of element
// in rows and sub-pattern 2
// and 3 will have same rows
if (i > 0)
{
cnt++;
}
// Increment Val to print the
// series 1, 2, 3, 4, 5 ...
Console.Write(++Val);
Console.Write( "0" );
}
// To get the first element of sub
// pattern 3 find the sum of first N-1
// elements first N-1 elements in row1
// previous of Sub-Pattern 2
// Finally, add the (N-1)th element
// i.e., 5 and increment it by 1
if (i == 0)
{
int Sumbeforelast = sum(Val) * 2;
Pthree = Val + Sumbeforelast + 1;
initial = Pthree;
}
// Initial is used to give the initial
// value of the row in Sub-Pattern 3
initial = initial - cnt;
Pthree = initial;
// Sub-Pattern 3
for ( int k = i; k < N; k++)
{
Console.Write(Pthree++);
// Skip printing zero at the last
if (k != N - 1)
{
Console.Write( "0" );
}
}
Console.WriteLine();
}
} // Driver code public static void Main(String[] args)
{ // Given N
int N = 5;
// Function call
BSpattern(N);
} } // This code is contributed by shikhasingrajput |
<script> //Javascript implementation to print // the given pattern // Function to find the sum of // N integers from 1 to N function sum( n)
{ return n * parseInt((n - 1) / 2);
} // Function to print the given // pattern function BSpattern( N)
{ var Val = 0, Pthree = 0,
cnt = 0, initial;
var s = "**" ;
// Iterate over [0, N - 1]
for ( var i = 0; i < N; i++) {
cnt = 0;
// Sub-Pattern - 1
if (i > 0) {
document.write( s);
s += "**" ;
}
// Sub-Pattern - 2
for ( var j = i; j < N; j++) {
// Count the number of element
// in rows and sub-pattern 2 and 3
// will have same rows
if (i > 0) {
cnt++;
}
// Increment Val to print the
// series 1, 2, 3, 4, 5 ...
document.write( ++Val);
document.write( 0);
}
// To get the first element of sub
// pattern 3 find the sum of first N-1
// elements first N-1 elements in row1
// previous of Sub-Pattern 2
// Finally, add the (N-1)th element
// i.e., 5 and increment it by 1
if (i == 0) {
var Sumbeforelast = sum(Val) * 2;
Pthree = Val + Sumbeforelast + 1;
initial = Pthree;
}
// Initial is used to give the initial
// value of the row in Sub-Pattern 3
initial = initial - cnt;
Pthree = initial;
// Sub-Pattern 3
for ( var k = i; k < N; k++) {
document.write(Pthree++);
// Skip printing zero at the last
if (k != N - 1) {
document.write( 0);
}
}
document.write( "<br>" );
}
} // Given N var N = 5;
// Function Call BSpattern(N); // This code is contributed by SoumikMondal </script> |
102030405026027028029030 **6070809022023024025 ****10011012019020021 ******13014017018 ********15016
Time Complexity: O(N2)
Auxiliary Space: O(1)