Pozitif bir tam sayı , n , bir şekilde temsil edilebilir tamsayı kenarları dikdörtgen bir , b , öyle ki n = bir * b . Yani, alan sayıyı temsil eder. Genel olarak, a ve b verilen n için benzersiz değildir .
Bilindiği gibi, kenarları altın orandayken bir dikdörtgen özellikle göze hoş geliyor (veya beyin mi?) , Φ = (sqrt (5) +1) / 2 ≈ 1.6180339887 ...
Bu iki olgunun bir araya getiren bu sorun amacı bir tamsayıyı ayrıştırılması için n, iki tamsayı ürüne bir , b olan oranı mümkün olduğunca yakın gibidir cp (ℝ olağan boyutlar ile). Φ irrasyonel olduğu gerçeği, benzersiz bir çözüm çifti olduğu anlamına gelir ( a , b ).
Meydan okuma
Olumlu bir tamsayı n verildiğinde , çıktı pozitif tamsayı a , b , a * b = n olacak ve a / b ve φ arasındaki mutlak fark en aza indirilecektir .
Örnek olarak, n = 12'yi dikkate alın . A * b = n'yi sağlayan çiftler ( a , b ) : (1, 12), (2,6), (3,4), (4,3), ( 6,2), (12,1). Oranı φ 'ya en yakın olan çift (4,3) olup, 4/3 = 1.333' dür.
kurallar
İşlevler veya programlar kabul edilebilir.
Payı ( a ) görünmelidir birinci çıkış ve payda ( b ) ikinci bir . Bunun dışında, giriş ve çıkış formatları her zamanki gibi esnektir. Örneğin, iki sayı, herhangi bir makul ayırıcıya sahip dizeler olarak veya bir dizi olarak çıkarılabilir.
Kod isteğe bağlı olarak büyük sayılar için teoride çalışmalıdır. Uygulamada, bellek veya veri tipi kısıtlamaları ile sınırlandırılabilir.
Üçüncü ondalık basamağa kadar doğru olduğu sürece φ yaklaşık bir versiyonunu düşünmek yeterlidir . Bu doğru arasındaki mutlak fark cp ve yaklaşık değer 0.0005'i geçmemelidir. Örneğin, 1.618 kabul edilebilir.
Yaklaşık bir, rasyonel sürümünü kullanırken cp çözüm benzersiz olmadığını küçük bir şans var. Bu durumda herhangi bir a , b çiftini çıkartabilirsiniz. en aza indirme kriterini karşılayan .
En kısa kod kazanır.
Test durumları
1 -> 1 1
2 -> 2 1
4 -> 2 2
12 -> 4 3
42 -> 7 6
576 -> 32 18
1234 -> 2 617
10000 -> 125 80
199999 -> 1 199999
9699690 -> 3990 2431
|a/b-b/a-1|
ümit verici olsa da, bir ispat düzenli olsa da
a/b
. Birim karesini kaldırmak, sağdaki küçük dikdörtgeni temsil eder b/a
. Altın bir dikdörtgen bu nedenle 1 fark yaratır.