Статья Автор: Лебедев Дмитрий

TUZ_3-14 Получение представления числа в сбалансированной троичной системе

TUZ_3-14 Получение представления числа в сбалансированной троичной системе

TUZ_3-14 Получение представления числа в сбалансированной троичной системе
3.14 Получение представления числа в сбалансированной троичной системе
Мы знаем, что в любой системе счисления с основанием r используются цифры от 0 до r – 1.
Пусть дано троичное число n = 1022. Преобразуем его в систему счисления с основанием 10:
2 × 30 + 2 × 31 + 0 × 32 + 1 × 33 = 35.
Это обычный способ преобразования троичного числа в десятичное.
Существует другой способ преобразования числа из системы счисления с основанием 3 в систему с основанием 10.
Рассмотрим следующий пример:
–1 × 30 + 0 × 31 + 1 × 32 + 1 × 33 = 35.
Второе представление называется представлением в сбалансированной троичной.
В сбалансированной троичной системе счисления используются цифры 0, 1 и –1,
тогда как в обычной троичной системе – цифры 0, 1 и 2.
В этом задании нужно найти коэффициенты при цифрах в сбалансированной троичной системе счисления.
Напишите функцию, которая принимает положительное целое число n
и возвращает массив коэффициентов в сбалансированной тройной системе, таких, что их сумма равняется n.
Обратите внимание, что коэффициенты в массиве должны следовать в порядке убывания их абсолютных значений,
а знак перед элементом определяет цифру (1 или –1).
В табл. 3.14 показаны ожидаемые результаты для некоторых входных данных.
Таблица 3.14. Некоторые ожидаемые результаты для задачи получения чисел в сбалансированной троичной системе
n Ожидаемый результат 
25  [27, –3, 1]
28 [27, 1]
88  [81, 9, –3, 1]
1400  [2187, –729, –81, 27, –3, –1]

Алгоритм
Алгоритм принимает положительное целое число n.
Чтобы получить коэффициент, алгоритм вычисляет и сохраняет остаток от деления n на 3.
Затем он выбирает целую часть от (n + 1)/3 и снова вычисляет остаток.
Этот процесс повторяется до тех пор, пока n не станет равно 0.
На следующем шаге принимается, что p – это соответствующая позиция коэффициента.
Для каждого p-го элемента в списке остатков алгоритм сравнивает его с 1.
Если элемент равен 1, алгоритм вычисляет 1 × 3p.
Если элемент –1, алгоритм вычисляет –1 × 3p.
Если элемент равен 0, то никакие вычисления не выполняются.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать