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)