您的目标是编写一些代码,该代码将为输入分数输出最短的唯一十进制序列。分母相同的两个分数都不能具有相同的输出,尽管分母不同的分数可能具有相同的表示。
以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开头的分母为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
这样,您不必再次计算。我有一个基于此的递归ES6版本,仅以86个字节为基础...