正の整数nは、n = a * bとなるように、整数辺 a、bを持つ長方形として表すことができます。つまり、面積は数値を表します。一般に、aとbは与えられたnに対して一意ではありません。
よく知られているように、長方形の辺が黄金比である場合、長方形は目にとって特別に心地よい(または脳ですか?)、φ =(sqrt(5)+1)/ 2≈1.6180339887 ...
これらの2つの事実を組み合わせて、この課題の目的は、整数nを2つの整数a、bの積に分解することです。その比率は、φに可能な限り近い(usualの通常のメトリックで)。φが無理であるという事実は、一意の解のペア(a、b)があることを意味します。
チャレンジ
正の整数で指定されたN、出力正の整数、Bよう * B = Nとの差の絶対値/ Bとφが最小化されます。
一例として、考えるN対(= 12 、B満たす)* B = N(1、12)、(2,6)、(3,4)、(4,3)、(:あり6,2)、(12,1)。比率がφに最も近いペアは(4,3)で、4/3 = 1.333になります。
ルール
機能またはプログラムは受け入れ可能です。
分子()が表示されなければならない最初の出力で、かつ分母(B)第二。それ以外は、入力および出力形式は通常どおり柔軟です。たとえば、2つの数値は、適切な区切り文字を含む文字列として、または配列として出力できます。
このコードは、任意の大きな数値に対して理論的に機能するはずです。実際には、メモリまたはデータ型の制限によって制限される場合があります。
3番目の小数以下の精度である限り、φの近似バージョンを考慮するだけで十分です。つまり、真のφと近似値の絶対差は0.0005を超えてはなりません。たとえば、1.618は許容範囲です。
近似の合理的なバージョンのφを使用する場合、解が一意ではない可能性がわずかにあります。その場合、最小化条件を満たす任意のペアa、bを出力できます。
最短のコードが優先されます。
テストケース
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|
証拠が順番になるでしょうが、約束している