あなたの目標は、入力分数に対して最短の一意の10進数シーケンスを出力するコードを記述することです。同じ分母を持つ2つの分数が同じ出力を持つことはありませんが、異なる分母を持つ分数が同じ表現を持つことは可能です。
入力として2つの整数を取ります。1つ目は分子、2つ目は分母です。
例えば:
n d output
----- ------
0 13: 0.00
1 13: 0.07
2 13: 0.1
3 13: 0.2
4 13: 0.30
5 13: 0.38
等
3/13
で始まる13の分母を持つ唯一の分数である0.2
ため、それ以上の数字は必要ありません。4/13
そして、5/13
で始まる、両方の0.3
別の数字を区別するために必要とされるように、。
あなたの出力よりも-1より大きい数字と1未満のゼロの有無にかかわらずどちらか小数点の前に、長い出力が一貫している限り、すなわちかもしれない0.5
と.5
同じ数であり、両方とも有効です。他の先行ゼロは許可されません。出力を別の値と区別する必要がある場合は、後続ゼロを表示する必要があります。
数字をゼロから四捨五入することはできません。それらは切り捨てられなければなりません。先頭または末尾にスペースがあってはなりません。オプションで、単一の末尾の改行がある場合があります。
その他のテスト値:
n d output
---------- ------
0 1: 0 (this 0 may not be removed because there's no decimal point)
5 1: 5
0 3: 0.0 (or .0)
4 3: 1.3
5 3: 1.6
10 8: 1.2
11 8: 1.3
12 8: 1.5
-496 -38: 13.05
458 -73: -6.27
70 106: 0.660 (or .660)
255 123: 2.07
256 -123: -2.081
-257 -123: 2.089
-258 123: -2.09
258 -152: -1.697
-259 152: -1.70
260 152: 1.710
272 195: 1.39
380 247: 1.538
455 -455: -1.000
-44 891: -0.049 (or -.049)
123 1234: 0.099 (or .099)
いずれの場合も、分子を一意に計算するには出力と分母で十分です。
/b
とi
するp
かもしれないあなたはとてもだけでなく内部のコードそれらをp
自分自身だけの単一のパラメータを取ります。また、答えはちょうどn
あなたがそれを再び計算する必要がないようにです。私は...緩く単なる86バイトで、これに基づいて再帰ES6のバージョンを持っている