Kami memiliki beberapa tantangan untuk konversi basis, tetapi semuanya tampaknya berlaku untuk nilai integer. Mari kita lakukan dengan bilangan real!
Tantangan
Input:
- Angka positif x nyata , dinyatakan dalam basis 10. Ini dapat diambil sebagai pelampung presisi ganda atau sebagai string. Untuk menghindari masalah presisi, angka tersebut dapat dianggap lebih besar dari 10 −6 dan kurang dari 10 15 .
- Sebuah basis sasaran b . Ini akan menjadi bilangan bulat dari 2 hingga 36.
- Sejumlah digit fraksional n . Ini akan menjadi bilangan bulat dari 1 hingga 20.
Output: the representasi dari x dalam basis b dengan n pecahan digit.
Saat menghitung ekspresi output, digit di luar n -th harus dipotong (tidak dibulatkan). Misalnya, x = 3.141592653589793
dalam basis b = 3
adalah 10.0102110122...
, jadi untuk n = 3
output akan menjadi 10.010
(pemotongan), bukan 10.011
(pembulatan).
Untuk x dan b yang menghasilkan jumlah digit hingga dalam bagian fraksional, representasi tak hingga yang ekivalen (terpotong menjadi n digit) juga diperbolehkan. Misalnya, 4.5
dalam desimal juga dapat direpresentasikan sebagai 4.49999...
.
Jangan khawatir tentang kesalahan floating point .
Format input dan output
x akan diberikan tanpa nol di depan. Jika x adalah bilangan bulat, Anda dapat mengasumsikan bahwa itu akan diberikan dengan bagian nol desimal ( 3.0
), atau tanpa bagian desimal ( 3
).
Outputnya fleksibel. Misalnya, itu bisa:
- Sebuah string yang mewakili angka dengan pemisah yang cocok (titik desimal) antara bagian bilangan bulat dan pecahan. Digit
11
,12
dll (untuk b di atas 10) dapat direpresentasikan sebagai hurufA
,B
seperti biasa, atau sebagai karakter berbeda lainnya (harap sebutkan). - String untuk bagian integer dan string lain untuk bagian fraksional.
- Dua array / daftar, satu untuk setiap bagian, berisi angka dari
0
hingga35
sebagai digit.
Satu-satunya batasan adalah bagian integer dan fraksional dapat dipisahkan (pemisah yang sesuai) dan menggunakan format yang sama (misalnya, tidak [5, 11]
untuk daftar yang mewakili bagian integer dan ['5', 'B']
untuk daftar yang mewakili bagian fraksional).
Aturan tambahan
- Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
- Kode terpendek dalam byte menang.
Uji kasus
Output ditampilkan sebagai string dengan angka 0
, ..., 9
, A
, ..., Z
, menggunakan .
sebagai pemisah desimal.
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
bisakah kita memiliki, 33
bukan 33.0
?
n
angka desimal