Given an integer N, the task is to print all the substring of N without doing any conversion i.e converting it into a string or an array.
Examples:
Input: N = 12345
Output: Possible Substrings: {1, 12, 123, 1234, 12345, 2, 23, 234, 2345, 3, 34, 345, 4, 45, 5}
Input: N = 123
Output: Possible Substrings: {1, 12, 123, 2, 23, 3}
Approach:
- Take the power of 10 according to size.
- Divide the number till it will become 0 and print.
- Then change the number to next the position of that number by taking the modulo with k.
- Update the no. of digits.
- Repeat the same process till n becomes 0.
Below is the implementation of above approach:
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std;
// Function to print the substrings of a number void printSubstrings( int n)
{ // Calculate the total number of digits
int s = log10 (n);
// 0.5 has been added because of it will
// return double value like 99.556
int d = ( int )( pow (10, s) + 0.5);
int k = d;
while (n) {
// Print all the numbers from
// starting position
while (d) {
cout << n / d << endl;
d = d / 10;
}
// Update the no.
n = n % k;
// Update the no.of digits
k = k / 10;
d = k;
}
} // Driver code int main()
{ int n = 123;
printSubstrings(n);
return 0;
} |
Java
// Java implementation // of above approach import java.util.*;
import java.lang.*;
import java.io.*;
class GFG
{ // Function to print the // substrings of a number static void printSubstrings( int n)
{ // Calculate the total
// number of digits
int s = ( int )Math.log10(n);
// 0.5 has been added because
// of it will return double
// value like 99.556
int d = ( int )(Math.pow( 10 , s) + 0.5 );
int k = d;
while (n > 0 )
{
// Print all the numbers
// from starting position
while (d > 0 )
{
System.out.println(n / d);
d = d / 10 ;
}
// Update the no.
n = n % k;
// Update the no.of digits
k = k / 10 ;
d = k;
}
} // Driver code public static void main(String args[])
{ int n = 123 ;
printSubstrings(n);
} } // This code is contributed // by Subhadeep |
Python3
# Python3 implementation of above approach import math
# Function to print the substrings of a number def printSubstrings(n):
# Calculate the total number of digits
s = int (math.log10(n));
# 0.5 has been added because of it will
# return double value like 99.556
d = (math. pow ( 10 , s));
k = d;
while (n > 0 ):
# Print all the numbers from
# starting position
while (d > 0 ):
print ( int (n / / d));
d = int (d / 10 );
# Update the no.
n = int (n % k);
# Update the no.of digits
k = int (k / / 10 );
d = k;
# Driver code if __name__ = = '__main__' :
n = 123 ;
printSubstrings(n);
# This code is contributed by Rajput-Ji |
C#
// C# implementation // of above approach using System;
class GFG
{ // Function to print the // substrings of a number static void printSubstrings( int n)
{ // Calculate the total
// number of digits
int s = ( int )Math.Log10(n);
// 0.5 has been added because
// of it will return double
// value like 99.556
int d = ( int )(Math.Pow(10, s) + 0.5);
int k = d;
while (n > 0)
{
// Print all the numbers
// from starting position
while (d > 0)
{
Console.WriteLine(n / d);
d = d / 10;
}
// Update the no.
n = n % k;
// Update the no.of digits
k = k / 10;
d = k;
}
} // Driver code public static void Main()
{ int n = 123;
printSubstrings(n);
} } // This code is contributed // by mits |
PHP
<?php // PHP implementation of above approach // Function to print the substrings // of a number function printSubstrings( $n )
{ // Calculate the total number
// of digits
$s = (int)log10( $n );
// 0.5 has been added because
// of it will return double
// value like 99.556
$d = (int)(pow(10, $s ) + 0.5);
$k = $d ;
while ( $n )
{
// Print all the numbers from
// starting position
while ( $d )
{
echo (int)( $n / $d ) . "\n" ;
$d = (int)( $d / 10);
}
// Update the no.
$n = $n % $k ;
// Update the no.of digits
$k = (int)( $k / 10);
$d = $k ;
}
} // Driver code $n = 123;
printSubstrings( $n );
// This code is contributed by mits ?> |
Javascript
<script> // javascript implementation // of above approach // Function to print the // substrings of a number function printSubstrings(n)
{ // Calculate the total
// number of digits
var s = parseInt(Math.log10(n));
// 0.5 has been added because
// of it will return double
// value like 99.556
var d = parseInt((Math.pow(10, s) + 0.5));
var k = d;
while (n > 0)
{
// Print all the numbers
// from starting position
while (d > 0)
{
document.write(parseInt(n / d)+ "<br>" );
d = parseInt(d / 10);
}
// Update the no.
n = n % k;
// Update the no.of digits
k = parseInt(k / 10);
d = k;
}
} // Driver code var n = 123;
printSubstrings(n); // This code contributed by Princi Singh </script> |
Output:
1 12 123 2 23 3
Time Complexity: O(nlogn)
Auxiliary Space: O(1)