Збалансовані основи:
Врівноважені бази по суті є такими ж, як і звичайні бази, за винятком того, що цифри можуть бути позитивними чи негативними, тоді як в нормальних базах цифри можуть бути лише позитивними.
З цього моменту врівноважені основи бази b
можуть бути представлені як balb
- настільки збалансована основа 4 = bal4
.
У визначенні на цей виклик, діапазон чисел в збалансованій основі бази b
від -(k - 1)
до b - k
, де
k = ceil(b/2)
Приклади діапазону цифр у різних збалансованих базах:
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
Представлення чисел у збалансованих базах в основному таке ж, як у звичайних основ. Наприклад, представлення числа 27
(база 10) до bal4
(збалансована основа 4) є 2 -1 -1
, тому що
2 -1 -1 (bal4)
= 2 * 4^2 + -1 * 4 + -1 * 1
= 32 + (-4) + (-1)
= 27 (base 10)
Завдання:
Ваше завдання задано три входи:
- число для перетворення (
n
)- цей вхід може бути гнучким, див. "Гнучкість вводу / виводу"
- база, яка
n
зараз знаходиться у (b
) - база, яка
n
повинна бути перетворена в (c
)
Де 2 < b, c < 1,000
.
Повернути число в збалансованому базовому c
поданні n
. Вихід також може бути гнучким.
Програма / функція повинна визначати довжину n
від самого входу.
Гнучкість вводу / виводу:
Ваш вхід n
і вихід можуть бути представлені наступними способами:
- визначення вашої мови масиву
- рядок з будь-яким символом як роздільник (наприклад, пробіли, коми)
Приклади:
Зауважте, що вони використовують масив Python як n
і вихід. Ви можете використовувати все, що відповідає вашій мові, доки воно не відповідає гнучкості "I / O Flexibility".
[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]
Це код-гольф , тому найкоротший код у байтах виграє!
[1,1,1,-2,1,0]