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
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