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

Java

// Java implementation of the approach
class GFG
{
 
// Function to return the count of digits of n
static int numberOfDigits(int n)
{
    int cnt = 0;
    while (n > 0)
    {
        cnt++;
        n /= 10;
    }
    return cnt;
}
 
// Function to print the left shift numbers
static void cal(int num)
{
    int digits = numberOfDigits(num);
    int powTen = (int) Math.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);
                 
        System.out.print(left + " ");
                 
        // Update the original number
        num = left;
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int num = 1445;
    cal(num);
}
}
 
// This code is contributed by
// PrinciRaj1992

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

C#

// C# implementation of the approach
using System;
 
public class GFG{
     
// Function to return the count of digits of n
static int numberOfDigits(int n)
{
    int cnt = 0;
    while (n > 0) {
        cnt++;
        n /= 10;
    }
    return cnt;
}
 
// Function to print the left shift numbers
static void cal(int num)
{
    int digits = numberOfDigits(num);
    int powTen = (int)Math.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);
        Console.Write(left +  " ");
 
        // Update the original number
        num = left;
    }
}
 
// Driver Code
    static public void Main (){
        int num = 1445;
        cal(num);
    }
}
 
// This code is contributed by akt_mit....  

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

Javascript

<script>
 
    // Javascript implementation of the approach
     
    // Function to return the count of digits of n
    function numberOfDigits(n)
    {
        let cnt = 0;
        while (n > 0) {
            cnt++;
            n = parseInt(n / 10, 10);
        }
        return cnt;
    }
 
    // Function to print the left shift numbers
    function cal(num)
    {
        let digits = numberOfDigits(num);
        let powTen = Math.pow(10, digits - 1);
 
        for (let i = 0; i < digits - 1; i++) {
 
            let firstDigit = parseInt(num / powTen, 10);
 
            // Formula to calculate left shift
            // from previous number
            let left = ((num * 10) + firstDigit)
                - (firstDigit * powTen * 10);
            document.write(left +  " ");
 
            // Update the original number
            num = left;
        }
    }
     
    let num = 1445;
    cal(num);
     
</script>
Producción: 

4451 4514 5144

 

Complejidad de Tiempo: O(log 10 n)
Espacio Auxiliar: O(1), ya que no se ha tomado espacio extra.

Publicación traducida automáticamente

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