Introducción a la identidad de Bézout.
El MCD de dos enteros A, B es el entero positivo más grande que los divide a ambos sin dejar ningún resto. Ahora, debido a la propiedad de Euclides, cada número entero N puede dividirse por otro número entero M de la siguiente manera:
existen pares u, v tal que podemos escribir:
Como hay una cantidad infinita de esos pares, nos gustaría encontrar unos especiales. De hecho, hay exactamente (A, B no es cero) dos pares que satifican
Desafío
El objetivo de este desafío es encontrar el par de coeficientes (ordenados) (u, v) que satisfacen las restricciones anteriores y donde debe ser positivo. Esto reduce la salida a un par único.
Entrada
Podemos suponer que la entrada es positiva, también A siempre será mayor que B (A> B).
Salida
La salida de nuestro programa / función debe ser el par (ordenado) especificado en el desafío.
Reglas
No se deben usar algoritmos euclidianos extendidos incorporados (por ejemplo, en Mathematica se permite usar GCD
pero no ExtendedGCD
, lo que de todos modos fallaría en 5,3).
La respuesta puede ser un programa completo (toma de entrada a través de STDIN o similar y salida a través de STDOUT) o una función (devolver el par).
Al lado del par (u, v) no habrá salida, se permiten nuevas líneas o espacios finales. (los corchetes o comas están bien)
Este es el código de golf, todas las lagunas estándar están prohibidas y el programa con el conteo de bytes más bajo gana.
Ejemplos
(A, B) -> (u, v)
(42, 12) -> (1, -3)
(4096, 84) -> (4, -195)
(5, 3) -> (2, -3)
(1155, 405) -> (20, -57)
(37377, 5204) -> (4365, -31351)
(7792, 7743) -> (7585, -7633)
(38884, 2737) -> (1707, -24251)
(6839, 746) -> (561, -5143)
(41908, 7228) -> (1104, -6401)
(27998, 6461) -> (3, -13)
(23780, 177) -> (20, -2687)
(11235813, 112358) -> (8643, -864301)