У нас было несколько проблем с базовым преобразованием, но все они, похоже, применимы к целочисленным значениям. Давайте сделаем это с реальными числами!
Соревнование
Входы:
- Действительное положительное число x , выраженное в базе 10. Это может быть принято как число с плавающей запятой двойной точности или как строка. Чтобы избежать проблем с точностью, можно предположить, что число больше 10 -6 и меньше 10 15 .
- Целевые базовые б . Это будет целое число от 2 до 36.
- Количество дробных цифр п . Это будет целое число от 1 до 20.
Выход: представление о х в базовой Ь с п дробных цифр.
При вычислении выходного выражения цифры за пределами n-й должны быть усечены (не округлены). Например, x = 3.141592653589793
в базе b = 3
есть 10.0102110122...
, поэтому для n = 3
вывода будет 10.010
(усечение), а не 10.011
(округление).
Для x и b, которые дают конечное число цифр в дробной части, также допускается эквивалентное бесконечное представление (усеченное до n цифр). Например, 4.5
в десятичном виде также можно представить как 4.49999...
.
Не беспокойтесь об ошибках с плавающей запятой .
Формат ввода и вывода
х будет дан без начальных нулей. Если x окажется целым числом, вы можете предположить, что оно будет дано с нулевой десятичной частью ( 3.0
) или без десятичной части ( 3
).
Выход гибкий. Например, это может быть:
- Строка, представляющая число с подходящим разделителем (десятичная точка) между целыми и дробными частями. Цифры
11
и12
т. Д. (Для b больше 10) могут быть представлены в виде буквA
,B
как обычно, или в виде любых других отдельных символов (просьба указать). - Строка для целочисленной части и другая строка для дробной части.
- Два массива / списка, по одному для каждой части, содержащие числа от
0
до35
как цифры.
Единственными ограничениями являются то, что целые и дробные части могут быть разделены (подходящий разделитель) и использовать один и тот же формат (например, нет [5, 11]
для списка, представляющего целую часть, и ['5', 'B']
для списка, представляющего дробную часть).
Дополнительные правила
- Программы или функции разрешены на любом языке программирования . Стандартные лазейки запрещены.
- Самый короткий код в байтах побеждает.
Контрольные примеры
Вывод показан в виде строки с цифрами 0
, ..., 9
, A
..., Z
, используя в .
качестве десятичного разделителя.
x, b, n -> output(s)
4.5, 10, 5 -> 4.50000 or 4.49999
42, 13, 1 -> 33.0 or 32.C
3.141592653589793, 3, 8 -> 10.01021101
3.141592653589793, 5, 10 -> 3.0323221430
1.234, 16, 12 -> 1.3BE76C8B4395
10.5, 2, 8 -> 1010.10000000 or 1010.01111111
10.5, 3, 8 -> 101.11111111
6.5817645, 20, 10 -> 6.BCE2680000 or 6.BCE267JJJJ
0.367879441171442, 25, 10 -> 0.94N2MGH7G8
12944892982609, 29, 9 -> PPCGROCKS.000000000
42, 13, 1
мы можем иметь 33
вместо 33.0
?
n
десятичные цифры