Dado un número entero N, la tarea es imprimir toda la substring de N sin realizar ninguna conversión, es decir, convertirla en una string o una array.
Ejemplos :
Entrada : N = 12345
Salida : Posibles substrings: {1, 12, 123, 1234, 12345, 2, 23, 234, 2345, 3, 34, 345, 4, 45, 5}
Entrada : N = 123
Salida : Posibles substrings : {1, 12, 123, 2, 23, 3}
Acercarse:
- Toma la potencia de 10 según el tamaño.
- Divide el número hasta que se convierta en 0 e imprime.
- Luego cambie el número al siguiente de la posición de ese número tomando el módulo con k.
- Actualiza el nro. de dígitos
- Repita el mismo proceso hasta que n se convierta en 0.
A continuación se muestra la implementación del enfoque anterior:
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>
Producción:
1 12 123 2 23 3