Programa Python3 para verificar si todos los elementos de la array se pueden convertir a números pronicos girando dígitos

Dada una array arr[] de tamaño N , la tarea es verificar si es posible convertir todos los elementos de la array en un número pronico al rotar los dígitos de los elementos de la array cualquier cantidad de veces.

Ejemplos:

Entrada: { 321, 402, 246, 299} 
Salida: Verdadero 
Explicación: 
arr[0] → La rotación a la derecha una vez modifica arr[0] a 132 (= 11 × 12). 
arr[1] → La rotación a la derecha una vez modifica arr[0] a 240 (= 15 × 16). 
arr[2] → La rotación a la derecha dos veces modifica arr[2] a 462 (= 21 × 22). 
arr[3] → La rotación a la derecha dos veces modifica arr[3] a 992 (= 31 × 32).

Entrada: { 433, 653, 402, 186}
Salida: Falso

Enfoque: siga los pasos a continuación para resolver el problema:

  • Recorra la array y verifique para cada elemento de la array, si es posible convertirlo en un número pronico .
  • Para cada elemento de la array, aplique todas las rotaciones posibles y verifique después de cada rotación si el número generado es pronico o no.
  • Si no es posible convertir ningún elemento de la array en un número pronico, imprima «Falso» .
  • De lo contrario, escriba «Verdadero» .

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

Python3

# Python implementation of
# the above approach
  
# Function to check if a number
# is a pronic number or not
def isPronic(n):
  
  for i in range(int(n**(1 / 2)) + 1):
    if i * (i + 1) == n:
      return True
  
  return False
  
# Function to check if any permutation
# of n is a pronic number or not
def checkRot(n):
  
  temp = str(n)
  
  for i in range(len(temp)):
  
    if isPronic(int(temp)):
      return True
  
    temp = temp[1:]+temp[0]
  
  return False
  
# Function to check if all array
# elements can be converted to
# a pronic number or not
def check(arr):
  
  # Traverse the array
  for i in arr:
  
    # If current element
    # cannot be converted 
    # to a pronic number
    if not checkRot(i):
      return False
  return True
  
# Driver Code
arr = [ 321, 402, 246, 299 ]
print(check(arr))
Producción: 

True

 

Complejidad de Tiempo: O(N 3/2 )
Espacio Auxiliar: O(1)

¡ Consulte el artículo completo sobre Comprobar si todos los elementos de la array se pueden convertir a números pronicos girando dígitos 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 *