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:
PHP
<?php // PHP implementation of the approach // Function to return the count // of digits of n function numberOfDigits($n) { $cnt = 0; while ($n > 0) { $cnt++; $n = floor($n / 10); } return $cnt; } // Function to print the left shift numbers function cal($num) { $digits = numberOfDigits($num); $powTen = pow(10, $digits - 1); for ($i = 0; $i < $digits - 1; $i++) { $firstDigit = floor($num / $powTen); // Formula to calculate left shift // from previous number $left = (($num * 10) + $firstDigit) - ($firstDigit * $powTen * 10); echo $left, " "; // Update the original number $num = $left; } } // Driver Code $num = 1445; cal($num); // This code is contributed by Ryuga ?>
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