Programa en C++ para generar todas las rotaciones de un número

Dado un número entero n , la tarea es generar todos los números de desplazamiento a la izquierda posibles. Un número de desplazamiento a la izquierda es un número que se genera cuando todos los dígitos del número se desplazan una posición a la izquierda y el dígito de la primera posición se desplaza al último.
Ejemplos: 
 

Entrada: n = 123 
Salida: 231 312
Entrada: n = 1445 
Salida: 4451 4514 5144 
 

Acercarse: 
 

  • Suponga que n = 123 .
  • Multiplique n por 10 , es decir , n = n * 10 = 1230 .
  • Agregue el primer dígito al número resultante, es decir , 1230 + 1 = 1231 .
  • Resta (primer dígito) * 10 k del número resultante donde k es el número de dígitos en el número original (en este caso, k = 3).
  • 1231 – 1000 = 231 es el número de desplazamiento a la izquierda del número original.

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

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the count of digits of n
int numberOfDigits(int n)
{
    int cnt = 0;
    while (n > 0) {
        cnt++;
        n /= 10;
    }
    return cnt;
}
 
// Function to print the left shift numbers
void cal(int num)
{
    int digits = numberOfDigits(num);
    int powTen = pow(10, digits - 1);
 
    for (int i = 0; i < digits - 1; i++) {
 
        int firstDigit = num / powTen;
 
        // Formula to calculate left shift
        // from previous number
        int left
            = ((num * 10) + firstDigit)
              - (firstDigit * powTen * 10);
        cout << left << " ";
 
        // Update the original number
        num = left;
    }
}
 
// Driver Code
int main()
{
    int num = 1445;
    cal(num);
    return 0;
}
Producción: 

4451 4514 5144

 

Complejidad de Tiempo: O(log 10 (num))
Espacio Auxiliar: O(1)

Consulte el artículo completo sobre Generar todas las rotaciones de un número para obtener más detalles.

Publicación traducida automáticamente

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