Programa Python3 para encontrar el valor máximo posible al rotar los dígitos de un número dado

Dado un entero positivo N , la tarea es encontrar el valor máximo entre todas las rotaciones de los dígitos del entero N .

Ejemplos:

Entrada: N = 657
Salida: 765
Explicación: Todas las rotaciones de 657 son {657, 576, 765}. El valor máximo entre todas estas rotaciones es 765.

Entrada: N = 7092
Salida: 9270
Explicación:
Todas las rotaciones de 7092 son {7092, 2709, 9270, 0927}. El valor máximo entre todas estas rotaciones es 9270.

Planteamiento: La idea es encontrar todas las rotaciones del número N e imprimir el máximo entre todos los números generados. Siga los pasos a continuación para resolver el problema:

  • Cuente el número de dígitos presentes en el número N , es decir, el límite superior de log 10 N.
  • Inicialice una variable, digamos ans con el valor de N , para almacenar el número máximo resultante generado.
  • Iterar sobre el rango [1, log 10 (N) – 1] y realizar los siguientes pasos:
    • Actualice el valor de N con su próxima rotación.
    • Ahora, si la próxima rotación generada excede ans , actualice ans con el valor rotado de N
  • Después de completar los pasos anteriores, imprima el valor de ans como la respuesta requerida.

A continuación se muestra la implementación del enfoque anterior:

Python3

# Python program for the above approach
  
# Function to find the maximum value
# possible by rotations of digits of N
def findLargestRotation(num):
    
    # Store the required result
    ans = num
      
    # Store the number of digits
    length = len(str(num))
    x = 10**(length - 1)
      
    # Iterate over the range[1, len-1]
    for i in range(1, length):
        
        # Store the unit's digit
        lastDigit = num % 10
          
        # Store the remaining number
        num = num // 10
          
        # Find the next rotation
        num += (lastDigit * x)
          
        # If the current rotation is
        # greater than the overall
        # answer, then update answer
        if (num > ans):
            ans = num
              
    # Print the result
    print(ans)
  
# Driver Code
N = 657
findLargestRotation(N)
  
# This code is contributed by rohitsingh07052.
Producción: 

765

 

Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)

Consulte el artículo completo sobre el valor máximo posible mediante la rotación de dígitos de un número determinado 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 *