Programa Python3 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: 
 

Python3

# Python3 implementation of the approach
 
# function to return the count of digit of n
def numberofDigits(n):
    cnt = 0
    while n > 0:
        cnt += 1
        n //= 10
    return cnt
     
# function to print the left shift numbers
def cal(num):
    digit = numberofDigits(num)
    powTen = pow(10, digit - 1)
     
    for i in range(digit - 1):
         
        firstDigit = num // powTen
         
        # formula to calculate left shift
        # from previous number
        left = (num * 10 + firstDigit -
               (firstDigit * powTen * 10))
        print(left, end = " ")
         
        # Update the original number
        num = left
         
# Driver code
num = 1445
cal(num)
 
# This code is contributed
# by Mohit Kumar
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 *