Imprimir todas las substrings de un número sin ninguna conversión

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:  

  1. Toma la potencia de 10 según el tamaño.
  2. Divide el número hasta que se convierta en 0 e imprime.
  3. Luego cambie el número al siguiente de la posición de ese número tomando el módulo con k.
  4. Actualiza el nro. de dígitos
  5. 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

 

Publicación traducida automáticamente

Artículo escrito por jaysrm y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *