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

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