Encuentra todos los números enteros de N dígitos con dígitos secuenciales

Dado un número entero N , la tarea es encontrar todos los números enteros de N dígitos con dígitos secuenciales

Ejemplos :

Entrada : N = 4
Salida : {1234, 2345, 3456, 4567, 5678, 6789}
Explicación : Los números enteros de 4 dígitos con dígitos secuenciales son: {1234, 2345, 3456, 4567, 5678, 6789}

Entrada : N = 6
Salida : {123456, 234567, 345678, 456789} 

 

Enfoque : la tarea se puede resolver encontrando el primer número de N dígitos con dígitos secuenciales y luego sumando ( 111… N veces ), hasta que el último número sea menor que igual a ( 999… N veces ). Siga los pasos a continuación para resolver el problema:

  • Para cualquier N , el primer dígito secuencial será ( 123 … N veces )
  • Entonces almacene el primer número de dígito secuencial de longitud N en num
  • Dado que cada número de dígito secuencial diferirá en ( 111 … N veces ), almacene este valor en otra variable add .
  • Ahora, con la ayuda de loop, encuentre todos los números de dígitos secuenciales de longitud N , simplemente agregando add to num en cada iteración

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find all the N digit
// integers with sequential digits
vector<int> sequentialDigits(int n)
{
    vector<int> arr;
 
    // Stores the first N-digit
    // sequential number
    // (123 ... N times)
    long num = 0;
    for (int j = 0; j < n; j++)
        num = num * 10 + (j + 1);
 
    // Stores the difference
    // (111 ... N times)
    int add = 0;
    for (int i = 0; i < n; i++)
        add = add * 10 + 1;
 
    while (num % 10 > 0 && num % 10 <= 9
           && floor(log10(num) + 1) == n) {
 
        arr.push_back(num);
        num += add;
    }
 
    return arr;
}
 
// Driver Code
int main()
{
    int N = 4;
    vector<int> ans = sequentialDigits(N);
 
    // Print the required numbers
    for (auto& it : ans)
        cout << it << ' ';
 
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
 
class GFG{
 
  // Function to find all the N digit
  // integers with sequential digits
  static Vector<Integer> sequentialDigits(int n)
  {
    Vector<Integer> arr = new Vector<Integer>();
 
    // Stores the first N-digit
    // sequential number
    // (123 ... N times)
    long num = 0;
    for (int j = 0; j < n; j++)
      num = num * 10 + (j + 1);
 
    // Stores the difference
    // (111 ... N times)
    int add = 0;
    for (int i = 0; i < n; i++)
      add = add * 10 + 1;
 
    while (num % 10 > 0 && num % 10 <= 9
           && Math.floor(Math.log10(num) + 1) == n) {
 
      arr.add((int) num);
      num += add;
    }
 
    return arr;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    int N = 4;
    Vector<Integer> ans = sequentialDigits(N);
 
    // Print the required numbers
    for (int it : ans)
      System.out.print(it +" ");
  }
}
 
// This code is contributed by shikhasingrajput

Python3

# Python program for the above approach
import math
 
# Function to find all the N digit
# integers with sequential digits
def sequentialDigits(n):
 
    arr = []
 
    # Stores the first N-digit
    # sequential number
    # (123 ... N times)
    num = 0
    for j in range(0, n):
        num = num * 10 + (j + 1)
 
    # Stores the difference
    # (111 ... N times)
    add = 0
    for i in range(0, n):
        add = add * 10 + 1
 
    while (num % 10 > 0 and num % 10 <= 9 and math.floor(math.log10(num) + 1) == n):
 
        arr.append(num)
        num += add
 
    return arr
 
# Driver Code
N = 4
ans = sequentialDigits(N)
 
# Print the required numbers
for i in range(0, len(ans)):
    print(ans[i], end=" ")
 
# This code is contributed by Taranpreet

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
public class GFG{
 
  // Function to find all the N digit
  // integers with sequential digits
  static List<int> sequentialDigits(int n)
  {
    List<int> arr = new List<int>();
 
    // Stores the first N-digit
    // sequential number
    // (123 ... N times)
    long num = 0;
    for (int j = 0; j < n; j++)
      num = num * 10 + (j + 1);
 
    // Stores the difference
    // (111 ... N times)
    int add = 0;
    for (int i = 0; i < n; i++)
      add = add * 10 + 1;
 
    while (num % 10 > 0 && num % 10 <= 9
           && Math.Floor(Math.Log10(num) + 1) == n) {
 
      arr.Add((int) num);
      num += add;
    }
 
    return arr;
  }
 
  // Driver Code
  public static void Main(String[] args)
  {
    int N = 4;
    List<int> ans = sequentialDigits(N);
 
    // Print the required numbers
    foreach (int it in ans)
      Console.Write(it +" ");
  }
}
 
// This code is contributed by shikhasingrajput

Javascript

<script>
    // JavaScript program for the above approach
 
    // Function to find all the N digit
    // integers with sequential digits
    const sequentialDigits = (n) => {
        let arr = [];
 
        // Stores the first N-digit
        // sequential number
        // (123 ... N times)
        let num = 0;
        for (let j = 0; j < n; j++)
            num = num * 10 + (j + 1);
 
        // Stores the difference
        // (111 ... N times)
        let add = 0;
        for (let i = 0; i < n; i++)
            add = add * 10 + 1;
 
        while (num % 10 > 0 && num % 10 <= 9
            && Math.floor(Math.log10(num) + 1) == n) {
 
            arr.push(num);
            num += add;
        }
 
        return arr;
    }
 
    // Driver Code
    let N = 4;
    let ans = sequentialDigits(N);
 
    // Print the required numbers
    for (let it in ans)
        document.write(`${ans[it]} `);
 
    // This code is contributed by rakeshsahni
 
</script>
Producción

1234 2345 3456 4567 5678 6789 

Complejidad de Tiempo : O(N)
Espacio Auxiliar : O(1)

Publicación traducida automáticamente

Artículo escrito por Code_r 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 *