Introduzione all'identità di Bézout
Il GCD di due numeri interi A, B è il numero intero positivo più grande che li divide entrambi senza lasciare resto. Ora a causa della proprietà di Euclide che ogni intero N può essere diviso per un altro intero M come segue:
esistono coppie u, v tali che possiamo scrivere:
Poiché esiste una quantità infinita di quelle coppie, vorremmo trovarne di speciali. Esistono infatti esattamente (A, B che non è zero) due di queste coppie che si saturano
Sfida
L'obiettivo di questa sfida è di trovare la coppia (ordinata) di coefficienti (u, v) che saturano i vincoli di cui sopra e dove devi essere positivo. Ciò restringe l'output a una coppia unica.
Ingresso
Possiamo supporre che l'ingresso sia positivo, inoltre A sarà sempre maggiore di B (A> B).
Produzione
L'output del nostro programma / funzione deve essere la coppia (ordinata) specificata nella sfida.
Regole
Non si devono usare algoritmi euclidi estesi incorporati (ad es. In Mathematica si può usare GCD
ma non ExtendedGCD
- che fallirebbero comunque per 5,3).
La risposta può essere un programma completo (che accetta input tramite STDIN o simile e output tramite STDOUT) o una funzione (che restituisce la coppia).
Accanto alla coppia (u, v) non deve esserci alcun output, sono consentiti newline o spazi finali. (parentesi o virgole vanno bene)
Questo è il golf del codice, sono vietate tutte le scappatoie standard e vince il programma con il numero di byte più basso.
Esempi
(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)