Existe una ecuación, suponiendo ny xson positivas,

eso expresa la relación entre dos monomios, uno de los cuales es una tergiversación común del otro. Muchas personas cometen el simple error de igualar estos (es decir, 3x^2y (3x)^2).
Desafío
Dado un entero positivo i, determine y devuelva la solución ny xcon la suma más pequeña como una matriz [n, x]. En caso de empate, cualquier conjunto de soluciones es aceptable.
Casos de prueba
62658722541234765
[15, 11]
202500
[4, 15]
524288
[8, 4]
33044255768277
[13, 9]
code-golf
number-theory
Puertas de Zach
fuente
fuente

[x, n]lugar de[n, x]?nyxenteros, ¿verdad?[n, x]y no hay restricción de tiempo @Fatalizenyxson enteros @LuisMendoRespuestas:
Brachylog , 35 bytes
Pruébalo en línea!
Explicación
Construimos una lista
[N, X], dondeN >= X, luego de asignarle valores, probamos ambos[N, X]y[X, N]como posible salida. Por ejemplo, siNse asigna a3, vamos a probar a través de dar marcha atrás[3, 1],[1, 3],[3, 2],[2, 3],[3, 3]y[3, 3]. Después de eso, el siguiente paso de retroceso ocurrirá en el valor deN, que irá a4, etc.fuente
Mathematica, 61 bytes
¡Gracias a las millas por ahorrar 2 bytes, más un montón de bytes que conté sin ninguna razón!
Calcula una tabla de pares {n, x}, donde x = (i / n) ^ (1 / n), utilizando todos los valores posibles de n; mantiene solo aquellos para los cuales la x correspondiente es un número entero; luego devuelve el par con el mayor valor de n.
Aquí, "todos los valores posibles de n" van de 1 a 2 * ln (i). Esto ignora la solución {n, x} = {i, 1}, pero está bien ya que la solución {n, x} = {1, i} será suficiente si es la mejor opción. Por lo tanto, x nunca necesita ser menor que 2, lo que significa que n * 2 ^ n ≤ i, y todos esos n son menores que 2 * ln (i).
Con el cálculo se puede demostrar que el par {n, x} que minimiza su suma en este contexto es el mismo que el par {n, x} con el n más grande (sin contar {i, 1}). Es por eso que la inicial
Lastes lo suficientemente buena como para encontrar el par óptimo.fuente
IntegerQ@*Lastpara guardar 2 bytes, pero también cuento 63 no 86 bytes en esta versión actual.MATL , 22 bytes
Las salidas son
x,nen ese orden.La entrada está limitada por el
doubletipo de datos predeterminado de MATL , que puede representar con precisión enteros hasta2^53solo. Esto excluye la primera prueba (aún así, da el resultado correcto, pero eso no se puede garantizar en general para entradas tan grandes).Pruébalo en línea!
Explicación
El código usa dos bucles anidados:
do...whilebucle externo pasa por todas las sumas posiblesn+xen orden creciente. El ciclo se detendrá tan pronto como se encuentre una solución. Esto garantiza que generemos la solución con una suma mínima.for eachbucle interno prueba todonyxcon esa suma. Cuando la suma coincide con la entrada, se sale del bucle interno y se establece la condición del bucle del bucle externofalsepara que también se salga uno.Código comentado:
fuente
Jalea ,
2316 bytesDado
i, esto genera todos los pares de enteros con reemplazo en[1, i]. Luego realiza el mismo filtrado y clasificación que en la solución anterior que se muestra a continuación. Dado que no hay restricción de tiempo, la fuerza bruta funcionará con el tiempo suficiente.Pruébalo en línea! , pero no intente valores grandes en línea.
En mi PC, toma alrededor de 6 minutos calcular el resultado para
i = 2048usar la versión ineficiente.Versión eficiente
Esta es la solución anterior para 23 bytes que puede resolver los valores grandes rápidamente.
Dado
i, calcula los divisores deipara generar pares de[n, x]dondenes un divisor yx = floor( (i/n)^(1/n) ). Luego lo filtra por valores donden * x^n == i, ordena los pares restantes por su suma y devuelve el primer par.Pruébalo en línea! o Verificar todos los casos de prueba.
Explicación
fuente
PHP, 104 bytes
Esto genera todas las soluciones posibles que no están en el formato propuesto 73 Bytes
fuente
Perl, 52 bytes
Incluye +2 para
-apDar entrada sobre STDIN
mono.pl:1También se hizo un esfuerzo para que funcione . No tengo idea si los errores de coma flotante pueden hacer que esto devuelva la respuesta incorrecta para algunas entradas.fuente