Introdução à identidade de Bézout
O MDC de dois números inteiros A, B é o maior número inteiro positivo que divide os dois, sem deixar resto. Agora, devido à propriedade de Euclid, cada número inteiro N pode ser dividido por outro número inteiro M, da seguinte maneira:
existem pares u, v para que possamos escrever:
Como existe uma quantidade infinita desses pares, gostaríamos de encontrar pares especiais. De fato, existem exatamente (A, B não sendo zero) dois desses pares que saturam
Desafio
O objetivo deste desafio é encontrar o par (ordenado) de coeficientes (u, v) que satisfazem as restrições acima e onde u deve ser positivo. Isso reduz a saída para um par único.
Entrada
Podemos assumir que a entrada é positiva, também A sempre será maior que B (A> B).
Resultado
A saída do nosso programa / função deve ser o par (pedido) especificado no desafio.
Regras
Não se deve usar algoritmos euclidianos estendidos incorporados (por exemplo, no Mathematica, é permitido o uso, GCD
mas não ExtendedGCD
- o que falharia em 5,3).
A resposta pode ser um programa completo (recebendo entrada via STDIN ou similar e saída via STDOUT) ou uma função (retornando o par).
Ao lado do par (u, v), não haverá saída, são permitidas novas linhas ou espaços à direita. (colchetes ou vírgulas estão bem)
Isso é código de golfe, todas as brechas padrão são proibidas e o programa com a menor contagem de bytes vence.
Exemplos
(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)