Chúng tôi đã có một vài thách thức đối với chuyển đổi cơ sở, nhưng tất cả chúng dường như áp dụng cho các giá trị nguyên. Hãy làm điều đó với những con số thực!
Các thách thức
Đầu vào:
- Số dương thực x , được biểu thị trong cơ sở 10. Điều này có thể được coi là số float chính xác kép hoặc dưới dạng chuỗi. Để tránh các vấn đề chính xác, số có thể được giả định là lớn hơn 10 −6 và nhỏ hơn 10 15 .
- Một căn cứ mục tiêu b . Đây sẽ là một số nguyên từ 2 đến 36.
- Một số chữ số phân số n . Đây sẽ là một số nguyên từ 1 đến 20.
Đầu ra: biểu diễn của x trong cơ sở b với n chữ số phân số.
Khi tính toán biểu thức đầu ra, các chữ số nằm ngoài n -th nên được cắt bớt (không làm tròn). Ví dụ, x = 3.141592653589793
trong cơ sở b = 3
là 10.0102110122...
, vì vậy đối n = 3
với đầu ra sẽ là 10.010
(cắt ngắn), không phải 10.011
(làm tròn).
Đối với x và b tạo ra một số chữ số hữu hạn trong phần phân số, biểu diễn vô hạn tương đương (cắt ngắn thành n chữ số) cũng được cho phép. Ví dụ, 4.5
trong thập phân cũng có thể được biểu diễn dưới dạng 4.49999...
.
Đừng lo lắng về lỗi dấu phẩy động .
Định dạng đầu vào và đầu ra
x sẽ được đưa ra mà không có số không dẫn đầu. Nếu x tình cờ là một số nguyên, bạn có thể giả sử rằng nó sẽ được cung cấp với phần thập phân bằng không ( 3.0
) hoặc không có phần thập phân ( 3
).
Đầu ra là linh hoạt. Ví dụ: nó có thể là:
- Một chuỗi đại diện cho số có dấu phân cách phù hợp (dấu thập phân) giữa các phần nguyên và phần phân số. Chữ số
11
,12
v.v (đối với b ngoài 10) có thể được biểu diễn dưới dạng chữ cáiA
,B
như bình thường hoặc như bất kỳ ký tự riêng biệt nào khác (vui lòng ghi rõ). - Một chuỗi cho phần nguyên và một chuỗi khác cho phần phân số.
- Hai mảng / danh sách, một cho mỗi phần, chứa các số từ
0
đến35
dưới dạng chữ số.
Các hạn chế duy nhất là các phần nguyên và phần phân số có thể được phân tách (dấu phân cách phù hợp) và sử dụng cùng định dạng (ví dụ: không có [5, 11]
danh sách đại diện cho phần nguyên và ['5', 'B']
cho danh sách đại diện cho phần phân số).
Quy tắc bổ sung
- Các chương trình hoặc chức năng được cho phép, trong bất kỳ ngôn ngữ lập trình . Sơ hở tiêu chuẩn bị cấm.
- Mã ngắn nhất trong byte thắng.
Các trường hợp thử nghiệm
Đầu ra được hiển thị như là một chuỗi với chữ số 0
, ..., 9
, A
, ..., Z
, sử dụng .
phân số thập phân.
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
chúng ta có thể có 33
thay vì 33.0
?
n
chữ số thập phân