Составить функцию для перевода десятичного числа Ав число Вс основанием счисления Nт.e. A(10)=В(N).Вывести В. Входные данные:78(10)=В2;105(10)=В7; 12510=В5;
Задача: составить функцию перевода десятичного числа A в число B основанием счисления N (A(10) -> B(N)) и привести примеры.
Краткая идея:
- Делим число A на основание N и выписываем остатки.
- Продолжаем делить частное на N, пока частное не станет 0.
- Цифры числа в новой системе счисления читаются в обратном порядке полученных остатков.
- Это обычный алгоритм перевода из десятичной системы в произвольную.
Примерная реализация (Python, пригодна для учебных целей):
- функция to_base(n, base): возвращает строку, представляющую число n в системе счисления base
- поддерживаются цифры 0–9 и буквы A, B, C, ... до base ≤ 36
Пример кода:
def to_base(n, base):
if n == 0:
return "0"
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if base < 2 or base > len(digits):
raise ValueError("Недопустимое основание")
res = []
while n > 0:
res.append(digits[n % base])
n //= base
res.reverse()
return ''.join(res)
Примеры применения к данным из задачи:
- 78 (10) в основание 2:
78 ÷ 2 = 39, остаток 0
39 ÷ 2 = 19, остаток 1
19 ÷ 2 = 9, остаток 1
9 ÷ 2 = 4, остаток 1
4 ÷ 2 = 2, остаток 0
2 ÷ 2 = 1, остаток 0
1 ÷ 2 = 0, остаток 1
Остатки читаем снизу вверх: 1001110
Ответ: 78(10) = 1001110(2)
- 105 (10) в основание 7:
105 ÷ 7 = 15, остаток 0
15 ÷ 7 = 2, остаток 1
2 ÷ 7 = 0, остаток 2
Остатки: 0, 1, 2 -> читаем наоборот: 210
Ответ: 105(10) = 210(7)
- 125 (10) в основание 5:
125 ÷ 5 = 25, остаток 0
25 ÷ 5 = 5, остаток 0
5 ÷ 5 = 1, остаток 0
1 ÷ 5 = 0, остаток 1
Остатки: 0, 0, 0, 1 -> 1000
Ответ: 125(10) = 1000(5)
Итоговые ответы для входных данных:
- 78(10) = 1001110(2)
- 105(10) = 210(7)
- 125(10) = 1000(5)
Пояснение по сложности:
- Время выполнения пропорционально количеству цифр в результирующей записи, то есть O(log_base(n)).
- Простая реализация работает для любых оснований до 36 (с использованием цифр 0–9 и букв A–Z).