Números de Kaprekar modificados

Un número de Kaprekar modificado es un número entero positivo con una propiedad especial. Si lo elevas al cuadrado, luego divides el número en dos enteros y sumas esos enteros, obtienes el mismo valor inicial.

Considera un número entero positivo n con d dígitos. Elevamos n al cuadrado para obtener un número que tiene 2 * d dígitos o (2 * d) - 1 dígitos. Divide la representación textual del cuadrado en dos partes, l y r. La parte derecha, r, debe tener d dígitos. La izquierda es la subcadena restante. Convierte esas dos subcadenas nuevamente en enteros, súmalos y comprueba si obtienes n.

Por ejemplo, si n=5, d=1, entonces el cuadrado de n = 25 . Dividimos eso en dos cadenas y las convertimos nuevamente en los enteros 2 y 5. Comprobamos 2 + 5 = 7, que no es 5, así que no es un número de Kaprekar modificado. Si n=9, d=1 y el cuadrado de n = 81, obtenemos 1+8=9, el n original.

Ten en cuenta que r puede tener ceros iniciales.

Completa el método kaprekar_numbers(). Debe devolver la lista de números de Kaprekar modificados en orden ascendente. kaprekar_numbers() tiene los siguientes parámetros:

  • p: un entero que representa el límite inferior del intervalo.
  • q: un entero que representa el límite superior del intervalo.

Ejemplos

kaprekar_numbers(1, 10) ➞ "1 9"

kaprekar_numbers(100, 300) ➞ "297"

kaprekar_numbers(1, 100) ➞ "1 9 45 55 99"

Notas

  • El intervalo incluye los límites inferior y superior.
  • Si no existen números de Kaprekar modificados en el intervalo indicado, devuelve "INVALID RANGE".