Wprowadzenie do tożsamości Bézouta
GCD dwóch liczb całkowitych A, B jest największą liczbą całkowitą dodatnią, która dzieli obie z nich, nie pozostawiając żadnej reszty. Teraz z powodu właściwości Euclida, że każdą liczbę całkowitą N można podzielić przez inną liczbę całkowitą M w następujący sposób:
istnieją pary u, v takie, że możemy napisać:
Ponieważ tych par jest nieskończona ilość, chcielibyśmy znaleźć specjalne. W rzeczywistości istnieją dokładnie (A, B nie będące zerem) dwie takie pary, które satyfikują
Wyzwanie
Celem tego wyzwania jest znalezienie (uporządkowanej) pary współczynników (u, v), które spełniają powyższe ograniczenia i gdzie u musi być dodatnia. To zawęża wynik do unikalnej pary.
Wejście
Możemy założyć, że dane wejściowe są dodatnie, również A zawsze będzie większe niż B (A> B).
Wynik
Wyjście naszego programu / funkcji musi być (uporządkowaną) parą określoną w wyzwaniu.
Zasady
Nie wolno używać wbudowanych rozszerzonych algorytmów euklidesowych (np. W Mathematica można używać, GCD
ale nie wolno)ExtendedGCD
- co i tak by się nie udało dla 5,3).
Odpowiedzią może być pełny program (pobieranie danych wejściowych przez STDIN lub podobny i wysyłanie danych wyjściowych przez STDOUT) lub funkcja (zwracanie pary).
Oprócz pary (u, v) nie powinno być żadnych danych wyjściowych, dozwolone są nowe znaki lub spacje. (nawiasy kwadratowe lub przecinki są w porządku)
To jest golf golfowy, wszystkie standardowe luki są zabronione, a program z najmniejszą liczbą bajtów wygrywa.
Przykłady
(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)