Inspirados em Barato, Rápido, Bom , vamos implementar um algoritmo que possui exatamente dois deles.
A matemática
Dado dois números inteiros diferentes de zero a e b , o GCF d é o maior número inteiro que divide a e b sem deixar resto. Os coeficientes de Bézout são pares de números inteiros (x, y) tais que ax + by = d . Os coeficientes de Bézout não são únicos. Por exemplo, dado:
a = 15, b = 9
Nós temos
d = 3
x = 2
y = -3
Desde a 15*2 + 9*(-3) = 30 - 27 = 3
.
Uma maneira comum de calcular o GCF e um par de coeficientes de Bézout é usar o algoritmo de Euclides , mas não é o único caminho.
O código
Seu programa deve receber dois números inteiros como entradas. Deve gerar / retornar o maior fator comum e um par de coeficientes de Bézout.
Exemplo de entrada:
15 9
saída de exemplo
3 (2, -3)
A saída pode estar em qualquer ordem e formato, mas deve ficar claro qual é o GCF e quais são os coeficientes.
The Underhanded
Seu programa tem potencial para ser barato, rápido e bom. Infelizmente, só podem ser dois deles ao mesmo tempo.
- Quando não é barato , o programa deve usar uma quantidade excessiva de recursos do sistema.
- Quando não é rápido , o programa deve levar uma quantidade excessiva de tempo.
- Quando não está bom , a saída do programa deve estar errada.
O programa deve ser capaz de executar (bem, não executar) todos os três. O que significa quando depende de você - pode ser com base no tempo, no compilador, em qual entrada é maior etc. Algumas notas adicionais:
- Seu programa não deve estar obviamente oculto e deve passar por uma inspeção superficial. Eu ficaria um pouco desconfiado se você implementasse três algoritmos separados.
- No caso barato , "quantidade excessiva de recursos do sistema" é algo que atrasaria outros programas. Pode ser memória, largura de banda, etc.
- No caso rápido , "tempo excessivo" significa em relação à maneira como funciona de maneira barata e boa. casos . O programa ainda deve terminar. Quanto mais perto você puder "incrivelmente frustrante, mas não frustrante o suficiente para interromper o programa", melhor (mais engraçado e).
- No bom caso, a saída não deve estar obviamente errada e deve passar por uma inspeção superficial. Eu ficaria muito desconfiado se isso me desse um GCF de "2 anna half".
Este é um concurso de popularidade, então a maioria dos upvotes ganha!
EDITAR
Para esclarecer, estou procurando programas que podem ser "rápidos e baratos" e "baratos e bons" e "rápidos e bons" em diferentes casos, não aqueles que apenas fazem um deles.