Căn cứ cân bằng:
Các cơ sở cân bằng về cơ bản giống như các cơ sở bình thường, ngoại trừ các chữ số có thể dương hoặc âm, trong khi ở các cơ sở bình thường, các chữ số chỉ có thể dương.
Từ đây trở đi, các cơ sở cân bằng của cơ sở b
có thể được biểu diễn dưới dạng balb
- vì vậy cơ sở cân bằng 4 = bal4
.
Trong định nghĩa của thách thức này, phạm vi các chữ số trong một cơ sở cân bằng b
là từ -(k - 1)
đến b - k
, trong đó
k = ceil(b/2)
Ví dụ về phạm vi chữ số trong các cơ sở cân bằng khác nhau:
bal10:
k = ceil(10/2) = 5
range = -(5 - 1) to 10 - 5 = -4 to 5
= -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
bal5:
k = ceil(5/2) = 3
range = -(3 - 1) to 5 - 3 = -2 to 2
= -2, -1, 0, 1, 2
Đại diện của các số trong các cơ sở cân bằng về cơ bản là giống như các cơ sở bình thường. Ví dụ: việc biểu diễn số 27
(cơ sở 10) thành bal4
(cơ sở 4 cân bằng) là 2 -1 -1
bởi vì
2 -1 -1 (bal4)
= 2 * 4^2 + -1 * 4 + -1 * 1
= 32 + (-4) + (-1)
= 27 (base 10)
Bài tập:
Nhiệm vụ của bạn là, đưa ra ba đầu vào:
- số được chuyển đổi (
n
)- đầu vào này có thể linh hoạt, xem "Linh hoạt I / O"
- cơ sở
n
hiện đang ở (b
) - cơ sở
n
được chuyển đổi thành (c
)
Ở đâu 2 < b, c < 1,000
.
Trả về số trong c
đại diện cơ sở cân bằng của n
. Đầu ra cũng có thể linh hoạt.
Chương trình / chức năng phải xác định độ dài n
từ chính đầu vào.
Linh hoạt I / O:
Đầu vào n
và đầu ra của bạn có thể được thể hiện theo những cách sau:
- định nghĩa ngôn ngữ của bạn về một mảng
- một chuỗi, với bất kỳ ký tự nào làm dấu phân cách (ví dụ: dấu cách, dấu phẩy)
Ví dụ:
Lưu ý rằng những cái này sử dụng một mảng Python như n
và đầu ra. Bạn có thể sử dụng bất cứ điều gì phù hợp với ngôn ngữ của bạn, miễn là nó phù hợp với định nghĩa của "I / O Flexility".
[2, -1, -1] 4 7 = [1, -3, -1]
[1, 2, 3, 4] 9 5 = [1, 2, 2, -1, 2]
[10, -9, 10] 20 5 = [1, 1, 1, -2, 1, 0]
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!
[1,1,1,-2,1,0]