Terinspirasi oleh Murah, Cepat, Bagus , kita akan menerapkan algoritma yang memiliki tepat dua di antaranya.
Matematika
Dengan dua bilangan nol bukan a dan b , GCF d adalah bilangan bulat terbesar yang membagi a dan b tanpa sisa. Koefisien Bézout adalah pasangan bilangan bulat (x, y) sedemikian rupa sehingga ax + by = d . Koefisien Bézout tidak unik. Misalnya, diberikan:
a = 15, b = 9
Kita punya
d = 3
x = 2
y = -3
Sejak 15*2 + 9*(-3) = 30 - 27 = 3
.
Cara umum untuk menghitung GCF dan sepasang koefisien Bézout adalah menggunakan Algoritma Euclid , tetapi itu bukan satu-satunya cara.
Kode
Program Anda harus mengambil dua bilangan bulat sebagai input. Ini akan menghasilkan / mengembalikan faktor umum terbesar dan sepasang koefisien Bézout.
Input contoh:
15 9
contoh output
3 (2, -3)
Outputnya bisa dalam urutan dan format apa pun, tetapi harus jelas yang mana adalah GCF dan yang merupakan koefisien.
Si curang
Program Anda berpotensi menjadi murah, cepat, dan bagus. Sayangnya, itu hanya dua.
- Saat itu tidak murah , program harus menggunakan sumber daya sistem dalam jumlah yang berlebihan.
- Saat itu tidak cepat , program harus menghabiskan banyak waktu.
- Jika tidak bagus , output program harus salah.
Program harus dapat melakukan (well, not do) ketiganya. Yang dilakukan saat terserah Anda- bisa berdasarkan waktu, kompiler, input mana yang lebih besar, dll. Beberapa catatan tambahan:
- Program Anda seharusnya tidak curang dan harus lulus inspeksi sepintas. Saya akan sedikit curiga jika Anda menerapkan tiga algoritma terpisah.
- Dalam kasus murah , "jumlah sumber daya sistem yang berlebihan" adalah segala sesuatu yang akan memperlambat program lain. Bisa jadi memori, bandwidth, dll.
- Dalam kasus cepat , "waktu berlebihan" berarti relatif terhadap cara kerjanya dalam kasus murah dan bagus . Program masih harus selesai. Semakin dekat Anda bisa "sangat frustasi tetapi tidak cukup frustasi untuk menghentikan program" yang (lebih lucu dan) lebih baik.
- Dalam kasus yang baik , hasilnya tidak seharusnya salah dan harus lulus inspeksi sepintas. Saya akan sangat curiga jika itu memberi saya GCF "2 anna setengah".
Ini adalah kontes popularitas, jadi kebanyakan orang yang menang menang!
EDIT
Untuk memperjelas, saya mencari program yang bisa "cepat dan murah" dan "murah dan bagus" dan "cepat dan bagus" dalam kasus yang berbeda, bukan yang hanya melakukan salah satunya.