Abbiamo avuto alcune sfide per la conversione di base, ma tutte sembrano applicarsi ai valori interi. Facciamolo con numeri reali!
La sfida
ingressi:
- Un vero numero positivo x , espresso in base 10. Questo può essere preso come un galleggiante a doppia precisione o come una stringa. Per evitare problemi di precisione, si può presumere che il numero sia maggiore di 10 −6 e inferiore a 10 15 .
- Una base target b . Questo sarà un numero intero compreso tra 2 e 36.
- Un numero di cifre frazionarie n . Questo sarà un numero intero compreso tra 1 e 20.
Output: la rappresentazione di x nella base b con n cifre frazionarie.
Quando si calcola l'espressione di output, le cifre oltre l' n -esimo devono essere troncate (non arrotondate). Ad esempio, x = 3.141592653589793
in base b = 3
è 10.0102110122...
, quindi per n = 3
l'output sarebbe 10.010
(troncamento), non 10.011
(arrotondamento).
Per x e b che producono un numero finito di cifre nella parte frazionaria, la rappresentazione infinito equivalente (troncato a n è consentito anche cifre). Ad esempio, 4.5
in decimale può anche essere rappresentato come 4.49999...
.
Non preoccuparti degli errori in virgola mobile .
Formato di input e output
verrà dato x senza zeri iniziali. Se x sembra essere un numero intero, puoi presumere che verrà dato con una parte decimale zero ( 3.0
) o senza parte decimale ( 3
).
L'output è flessibile. Ad esempio, può essere:
- Una stringa che rappresenta il numero con un separatore adatto (punto decimale) tra numero intero e parti frazionarie. Cifre
11
,12
ecc. (Per b oltre 10) possono essere rappresentate come lettereA
,B
come al solito, o come qualsiasi altro carattere distinto (specificare). - Una stringa per la parte intera e un'altra stringa per la parte frazionaria.
- Due matrici / elenchi, uno per ogni parte, contenenti numeri da
0
a35
come cifre.
Le uniche restrizioni sono che le parti intere e frazionarie possono essere separate (adatto separatore) e utilizzare lo stesso formato (ad esempio no [5, 11]
per l'elenco che rappresenta la parte intera e ['5', 'B']
per l'elenco che rappresenta la parte frazionaria).
Regole aggiuntive
- Programmi o funzioni sono consentiti, in qualsiasi linguaggio di programmazione . Sono vietate le scappatoie standard .
- Vince il codice più breve in byte.
Casi test
Uscita è indicata come una stringa con cifre 0
, ..., 9
, A
, ..., Z
utilizzando .
come separatore decimale.
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
possiamo avere 33
invece di 33.0
?
n
cifre decimali