Mieliśmy kilka wyzwań związanych z konwersją podstawową, ale wszystkie wydają się mieć zastosowanie do wartości całkowitych. Zróbmy to z liczbami rzeczywistymi!
Wyzwanie
Wejścia:
- Rzeczywista liczba dodatnia x , wyrażona w podstawie 10. Można to przyjąć jako zmiennoprzecinkowe podwójnej precyzji lub jako ciąg. Aby uniknąć problemów z precyzją, można założyć, że liczba ta jest większa niż 10 -6 i mniejsza niż 10 15 .
- Podstawy cel b . Będzie to liczba całkowita od 2 do 36.
- Liczbę ułamkową cyfr n . Będzie to liczba całkowita od 1 do 20.
Komunikat: przedstawienie z X bazy B, z n cyfr dziesiętnych.
Podczas obliczania wyrażenia wyjściowego cyfry poza n-tą powinny zostać obcięte (nie zaokrąglone). Na przykład x = 3.141592653589793
w bazie b = 3
jest 10.0102110122...
, więc dla n = 3
danych wyjściowych byłoby 10.010
(obcięcie), a nie 10.011
(zaokrąglenie).
Dla x i b, które tworzą skończoną liczbę cyfr w części ułamkowej, dozwolona jest również równoważna nieskończona reprezentacja (obcięta do n cyfr). Na przykład 4.5
w systemie dziesiętnym można również przedstawić jako 4.49999...
.
Nie martw się błędami zmiennoprzecinkowymi .
Format wejściowy i wyjściowy
x będzie podane bez zer wiodących. Jeśli x jest liczbą całkowitą, możesz założyć, że zostanie podana z zerową częścią dziesiętną ( 3.0
) lub bez części dziesiętnej ( 3
).
Dane wyjściowe są elastyczne. Na przykład może to być:
- Ciąg reprezentujący liczbę z odpowiednim separatorem (kropka dziesiętna) między częściami całkowitymi i ułamkowymi. Cyfry
11
,12
etc (dla b poza 10) można przedstawić jako literyA
,B
jak zwykle, lub jakichkolwiek innych wyraźnych znaków (proszę określić). - Ciąg dla części całkowitej i kolejny ciąg dla części ułamkowej.
- Dwie tablice / listy, po jednej dla każdej części, zawierające liczby od
0
do35
jako cyfry.
Jedynymi ograniczeniami są to, że części całkowite i ułamkowe można rozdzielić (odpowiedni separator) i użyć tego samego formatu (na przykład nie [5, 11]
dla listy reprezentującej część całkowitą i ['5', 'B']
dla listy reprezentującej część ułamkową).
Dodatkowe zasady
- Programy lub funkcje są dozwolone w dowolnym języku programowania . Standardowe luki są zabronione.
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Wyjście jest pokazany jako ciąg cyfr z 0
, ..., 9
, A
, ..., Z
, używając .
jako separatora dziesiętnego.
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
czy możemy 33
zamiast tego 33.0
?
n
cyfry dziesiętne