Задание 14
Позиционные системы счисления
Как посчитать цифры в записи огромного числа — вручную и программой — и как найти неизвестное число x или неизвестную цифру.
6 подтем · 44 задачи + 6 дополнительных · повышенный · ≈ 3 мин
Подтема 1 из 6
Запись числа и её значение
Что спрашивают в задании 14, как прочитать запись в любой системе и как получить запись числа делением.
Как устроена тема
В задании 14 огромное число записывают в другой системе счисления и спрашивают что-то о его цифрах. Вот задача, которую мы будем решать всю тему:
«Значение арифметического выражения 5²³ + 25¹² − 10 записали в системе счисления с основанием 5. Сколько цифр 4 содержится в этой записи?»
Переводить такое число вручную не нужно: его запись можно понять по тому, как оно составлено, или посчитать программой. Сначала разберём, что сказано в условии:
| В условии | Что это значит |
|---|---|
| значение выражения 5²³ + 25¹² − 10 | одно огромное число — в нём 17 десятичных цифр |
| записали в системе с основанием 5 | это же число пишут цифрами 0, 1, 2, 3, 4 |
| сколько цифр 4 | ответ — количество четвёрок в этой записи |
Тема состоит из шести подтем — у каждой своя страница. Идём по ним по порядку:
- Запись числа и её значение — ты сейчас здесь.
- Запись суммы и разности степеней — как выглядят степени основания, и ответ задачи вручную: 21.
- Цифры значения выражения программой — тот же ответ программой; так решают любую задачу на подсчёт цифр.
- Выражение с параметром x — вместо 10 вычитают неизвестное x.
- Неизвестные цифры — неизвестная цифра x стоит в самой записи.
- Неизвестное основание и признаки делимости — дополнительный урок для редких задач.
Почти везде задачу можно решить и вручную, и программой — выбирай вкладку «Вручную» или «Python». На экзамене подойдёт любой способ, а второй пригодится для проверки.
Значение записи
Какое число скрывается за записью 2304₅? Маленькое число снизу — основание системы, здесь 5.
Каждую цифру умножают на вес её места и всё складывают. Веса справа налево: 1, q, q², q³, … В десятичной системе так же: 507 = 5 · 100 + 0 · 10 + 7 · 1.
В Python то же самое делает :
print(int('2304', 5))Цифр в системе ровно q: от 0 до q − 1. Цифры «5» в пятеричной системе нет — после 4 идёт уже 10₅, то есть одна пятёрка и ноль единиц. Поэтому запись 10 в любой системе означает её основание: 10₅ = 5, 10₂ = 2.
Цифры-буквы
А как записать цифру «десять», если основание больше десяти?
Цифры больше 9 обозначают латинскими буквами: A = 10, B = 11, C = 12, … Каждая буква — это одна цифра. В шестнадцатеричной записи 1A3₁₆ три цифры: 1, десять и 3.
По записи можно оценить основание: оно больше самой большой цифры. В записи 372 есть цифра 7 — значит, основание не меньше 8; в 2B4 есть B = 11 — не меньше 12.
Тонкости:основания больше 36
Букв латинского алфавита 26, поэтому буквами записывают цифры только до основания 36: int(s, q) работает при q ≤ 36. При большем основании цифры хранят числами — так делают в подтеме 5.
Запись делением
Теперь наоборот: как записать число 329 в пятеричной системе?
Остаток от деления на q — последняя цифра записи, а целая часть частного — запись без этой цифры. 329 = 5 · 65 + 4: запись оканчивается на 4, а остальные её цифры — запись числа 65. Делим дальше, пока частное не станет нулём: каждое деление даёт ещё одну цифру, справа налево.
- Переводим 329 в систему с основанием 5. Цифры записи появятся справа налево.
- 329 = 5 · 65 + 4. Остаток 4 — цифра разряда 5⁰, дальше работаем с частным 65.
- 65 = 5 · 13 + 0. Остаток 0 — цифра разряда 5¹, дальше работаем с частным 13.
- 13 = 5 · 2 + 3. Остаток 3 — цифра разряда 5², дальше работаем с частным 2.
- 2 = 5 · 0 + 2. Остаток 2 — цифра разряда 5³, частное 0 — перевод закончен.
- Готово: 329 = 2304₅. Первый найденный остаток стоит справа, последний — слева.
Остатки 4, 0, 3, 2, прочитанные снизу вверх, — запись 2304₅. В Python остаток и целую часть частного дают :
print(329 % 5, 329 // 5)Тонкости:почему остаток — последняя цифра
2304₅ = 2 · 5³ + 3 · 5² + 0 · 5 + 4. Все слагаемые, кроме последнего, делятся на 5: 2304₅ = 5 · (2 · 25 + 3 · 5 + 0) + 4. Значит, при делении на 5 остаток — последняя цифра 4, а частное 2 · 25 + 3 · 5 + 0 = 230₅ — запись без неё.
Итого
- Значение записисумма цифр, умноженных на веса 1, q, q², …
- Цифрыот 0 до q − 1; 10 в системе q — это q
- БуквыA = 10, B = 11, …; буква — одна цифра
- Основаниебольше наибольшей цифры записи
- Запись делениемостатки — цифры справа налево
- Python
int(s, q),n % q,n // q
Проверьте себя
Ответь сначала сам, потом открой ответ.
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Четверичная запись 2103
Переведи в десятичную систему 2103₄.
Введите число.
Подсказка
Умножь каждую цифру на вес её разряда: 4³, 4², 4, 1.
Решение
Веса разрядов четверичной записи справа налево — 1, 4, 16, 64. Значение 2103₄ = 2 · 64 + 1 · 16 + 0 · 4 + 3 = 128 + 16 + 3 = 147.
print(int('2103', 4))Ответ: 147
Наименьшее основание для 3A7
Запись 3A7 возможна в нескольких системах счисления. Найди её значение в системе с наименьшим возможным основанием.
Введите число.
Подсказка
Основание больше наибольшей цифры; A = 10.
Решение
Наибольшая цифра записи — A = 10, поэтому основание не меньше 11. В системе с основанием 11: 3A7₁₁ = 3 · 121 + 10 · 11 + 7 = 480.
print(int('3A7', 11))Ответ: 480
94 в пятеричной системе
Переведи 94₁₀ в пятеричную систему.
Введите число.
Подсказка
Дели на 5 и записывай остатки; читай их снизу вверх.
Решение
94 = 5 · 18 + 4, 18 = 5 · 3 + 3, 3 = 5 · 0 + 3. Остатки снизу вверх — 3, 3, 4: запись 334₅. Проверка: 3 · 25 + 3 · 5 + 4 = 94.
def digits(n, q): if n == 0: return [0] result = [] while n > 0: result.append(n % q) n = n // q result.reverse() return result print(*digits(94, 5), sep='')Ответ: 334
Цифра в разряде 3
Какая цифра стоит в разряде 3 (считая справа с нуля) пятеричной записи числа 2024? Найди её формулой и проверь переводом.
Введите число.
Подсказка
Отбрось три младшие цифры делением на 5³ и возьми последнюю цифру остатком.
Решение
2024 // 5³ = 16 — это запись без трёх младших цифр, а 16 % 5 = 1 — её последняя цифра. Проверка: 2024 = 31044₅, в разряде 3 стоит 1.
print(2024 // 5 ** 3 % 5)Ответ: 1
Частное и остаток от деления на 49
Чему равен остаток от деления 2024 на 49? Найди его по семеричной записи 2024 = 5621₇.
Введите число.
Подсказка
49 = 7²: остаток — две последние семеричные цифры.
Решение
Деление на 7² отрезает две последние цифры семеричной записи, а остаток — это они сами: 21₇ = 2 · 7 + 1 = 15.
print(2024 % 49)Ответ: 15