Print all substring of a number without any conversion

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 numbervoid 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 codeint main(){ int n = 123; printSubstrings(n); return 0;} |
Java
// Java implementation // of above approachimport java.util.*;import java.lang.*;import java.io.*;class GFG{// Function to print the// substrings of a numberstatic 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 codepublic static void main(String args[]){ int n = 123; printSubstrings(n);}}// This code is contributed // by Subhadeep |
Python3
# Python3 implementation of above approachimport math# Function to print the substrings of a numberdef 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 codeif __name__ == '__main__': n = 123; printSubstrings(n);# This code is contributed by Rajput-Ji |
C#
// C# implementation // of above approachusing System;class GFG{// Function to print the// substrings of a numberstatic 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 codepublic 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 numberfunction 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 numberfunction 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 codevar 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)
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!



