Ваша цель - написать код, который будет выводить самую короткую уникальную десятичную последовательность для входной дроби. Никакие две дроби с одинаковым знаменателем не могут иметь одинаковый выходной результат, хотя дроби с разными знаменателями могут иметь одинаковое представление.
Возьмите 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
чтобы вам не пришлось рассчитывать его снова. У меня есть рекурсивная версия ES6, свободно основанная на этом, всего 86 байтов ...