Счетчик просмотров58

Перевод в произвольную систему счисления

Оглавление
Почему нужна своя функцияКак работает алгоритмГотовая функцияОбратный перевод — уже готовЧто обычно спрашиваютПример с ЕГЭ: задание 14 — подсчёт цифр

Почему нужна своя функция

bin, oct и hex покрывают только основания 2, 8 и 16. А в заданиях 14 и 16 постоянно встречаются системы с основанием 3, 5, 6, 7. Готовой функции для них нет — перевод пишут вручную, через остаток и целочисленное деление.

Как работает алгоритм

Делим число на основание, остатки записываем — и читаем их в обратном порядке. Переведём 25 в троичную систему:

ШагЧислоОстаток от деления на 3
1251
282
322

Остатки снизу вверх: 2 2 1, то есть 25 = 221₃. Проверка: 2·9 + 2·3 + 1 = 25.

Готовая функция

Эту функцию имеет смысл выучить наизусть — она нужна почти в каждом задании 14:

PYTHON-КОД
1
2
3
4
5
6
7
8
9
10
11
12

Две ключевые строки: n % b даёт очередной разряд, n //= b убирает его из числа. Строка собирается приписыванием слева — это и есть «чтение остатков в обратном порядке».

Если основание не больше 10, можно обойтись без строки digits:

PYTHON-КОД
1

Но с основанием 12 или 16 понадобятся буквы, поэтому универсальный вариант надёжнее.

Баннер статьи

Обратный перевод — уже готов

В обратную сторону писать ничего не нужно, int() умеет любое основание от 2 до 36: 

PYTHON-КОД
1
2
3

Что обычно спрашивают

Вопрос в условииКод
сколько цифр в записиlen(to_base(n, b))
сколько цифр «2»to_base(n, b).count("2")
сумма цифр записиsum(int(c) for c in to_base(n, b))
на какую цифру заканчиваетсяn % b
первая цифра записиto_base(n, b)[0]

Пример с ЕГЭ: задание 14 — подсчёт цифр

Формулировка: «Значение арифметического выражения 9⁸ + 3⁵ − 9 записали в системе счисления с основанием 3. Сколько цифр 2 содержится в этой записи?»

PYTHON-КОД
1
2
3
4

Ответ — 3. Заметь, что Python работает с большими числами точно, поэтому 9⁸ можно не упрощать — записываем выражение ровно так, как оно дано в условии.

Оцените статью

Другие статьи по предмету

Другие статьи не найдены