Ucuz, Hızlı, İyi'den esinlenerek , tam olarak iki tane içeren bir algoritma uygulayacağız.
Matematik
İki sıfırdan farklı tamsayılar verilen bir ve b GCF d büyük tamsayı olduğu bölme hem bir ve b kalanı olmadan. Katsayıları Bezout tamsayı çiftleridir (x, y) bu şekilde ax + tarafından d = . Bézout katsayıları benzersiz değildir. Örneğin, verilenler:
a = 15, b = 9
Sahibiz
d = 3
x = 2
y = -3
Beri 15*2 + 9*(-3) = 30 - 27 = 3
.
GCF ve bir çift Bézout katsayısını hesaplamanın yaygın bir yolu Öklid Algoritmasını kullanmaktır , ancak bu tek yol değildir.
Kod
Programınız girdi olarak iki tamsayı almalıdır. En büyük ortak faktörü ve bir çift Bézout katsayısını çıkarmalı / döndürmelidir.
Örnek girdi:
15 9
örnek çıktı
3 (2, -3)
Çıktı herhangi bir sırada ve biçimde olabilir, ancak hangisinin GCF ve hangilerinin katsayılar olduğu açık olmalıdır.
Underhanded
Programınızın ucuz, hızlı ve iyi olma potansiyeli vardır. Ne yazık ki, aynı anda sadece iki tane olabilir.
- Ucuz olmadığında , program aşırı miktarda sistem kaynağı kullanmalıdır.
- Hızlı olmadığında , program aşırı zaman almalıdır.
- İyi olmadığında , program çıktısı yanlış olmalıdır.
Program her üçünü de yapabilmelidir (iyi değil). Hangi zaman size kalmış- zamana, derleyiciye, hangi girdinin daha büyük olduğuna vb. Bağlı olabilir. Bazı ek notlar:
- Programınız açıkça göz ardı edilmemeli ve bir imtiyaz denetiminden geçmelidir. Üç ayrı algoritma uygularsanız biraz şüpheli olurum.
- Gelen ucuz durumda, "sistem kaynaklarının aşırı miktar" diğer programları yavaşlatabilir olur herşeydir. Bellek, bant genişliği vb. Olabilir.
- In hızlı durumda, "aşırı süresi", çalışır nasıl göreli anlamına ucuza ve iyi durumlarda. Program hala bitmelidir. "İnanılmaz derecede sinir bozucu ama programı durdurmak için yeterince sinir bozucu değil" daha yakın (daha komik ve) daha iyi.
- Gelen iyi durumda, çıkış açıkça yanlış olmamalı ve üstünkörü muayene geçmelidir. Bana "2 anna yarısı" GCF verirse çok şüpheli olurdum .
Bu bir popülerlik yarışmasıdır, bu yüzden çoğu upvotes kazanır!
DÜZENLE
Açıklığa kavuşturmak için, "hızlı ve ucuz" ve "ucuz ve iyi" ve "hızlı ve iyi" olabilecek programları arıyorum , bunlardan birini yapanlar değil.