Подтема 2 из 6
Запись суммы и разности степеней
Как выглядят qᵏ, qᵏ − 1 и qᵐ − qⁿ — и ответ задачи темы без программы.
Степень основания
Как выглядит 5²³ в пятеричной записи — первое слагаемое задачи темы?
Степень основания qᵏ записывается единицей и k нулями. Как 10³ = 1000 в десятичной системе: 5¹ = 10₅, 5² = 100₅, а 5²³ — единица и 23 нуля.
Второе слагаемое — степень 25, а не 5. Но 25 = 5², поэтому 25¹² = (5²)¹² = 5²⁴: двенадцать множителей 5² — это 24 множителя 5. В записи — единица и 24 нуля.
Тонкости:основания 2, 4, 8 и 16
Так же 4⁵⁰ = 2¹⁰⁰ и 8¹⁵ = 2⁴⁵. Если основания степеней — степени одного числа, сначала приведи их к основанию системы.
Степень минус единица
А что получится, если из степени вычесть 1? Например, 5⁴ − 1.
qᵏ − 1 записывается k одинаковыми цифрами q − 1 — наибольшими цифрами системы. Как 10⁴ − 1 = 9999: 5⁴ − 1 = 4444₅. Посмотри по шагам, откуда берутся четвёрки:
- 10000₅ — это 5⁴. Отнять 1 из разряда единиц нельзя: там 0.
- Единица разряда 5⁴ — это 5 единиц разряда 5³. Одну отдаём дальше вправо, 4 остаются.
- Единица разряда 5³ — это 5 единиц разряда 5². Одну отдаём дальше вправо, 4 остаются.
- Единица разряда 5² — это 5 единиц разряда 5¹. Одну отдаём дальше вправо, 4 остаются.
- Единица разряда 5¹ — это 5 единиц разряда 5⁰.
- Из 5 единиц вычли 1 — осталось 4. В каждом разряде цифра 4: 5⁴ − 1 = 4444₅.
Так в любой системе: 2⁵ − 1 = 11111₂, 3⁴ − 1 = 2222₃, 16³ − 1 = FFF₁₆.
Разность степеней
В задаче темы вычитают не 1, а 10. Удобнее сначала вычесть круглое для пятеричной системы число — 25 = 5². Как выглядит 5²³ − 5²?
qᵐ − qⁿ — это m − n цифр q − 1, а за ними n нулей. Вынесем 5²: 5²³ − 5² = 5² · (5²¹ − 1). Скобка — двадцать одна четвёрка, а умножение на 5² дописывает справа два нуля, как умножение на 100 в десятичной системе.
Так 5⁷ − 5³ = 4444000₅: четыре четвёрки и три нуля. Если m = n, разность равна нулю, и блока нет.
Ответ задачи темы
Теперь соберём запись 5²³ + 25¹² − 10.
Разложим выражение на части, которые не налезают друг на друга: тогда цифры записи можно сосчитать по частям. 10 вычтем из 25: 5²³ − 10 = (5²³ − 5²) + (5² − 10). Получаются три части:
- 25¹² = 5²⁴ — единица в разряде 24;
- в разряде 23 ни один блок не стоит — там ноль;
- 5²³ − 5² — 21 четвёрка в разрядах 22…2 и два нуля;
- 5² − 10 = 15 = 30₅ — цифры 3 и 0 в двух младших разрядах.
Проверка длины: в записи 1 + 1 + 21 + 2 = 25 цифр, а у числа между 5²⁴ и 5²⁵ ровно 25 цифр. Программой этот же ответ получим в подтеме 3.
Тонкости:вычитаемое больше 25
Займи степень, которая не меньше вычитаемого. Например, 5¹⁰ − 18 = (5¹⁰ − 5²) + (25 − 18): восемь четвёрок, затем 7 = 12₅ в двух младших разрядах.
Когда блоки пересекаются
А если части попадают в одни и те же разряды — например, 2¹⁵ + 2¹⁵?
Тогда складывают столбиком: в разряде пишут остаток суммы от деления на q, а целую часть переносят в следующий разряд. 2¹⁵ + 2¹⁵ = 2 · 2¹⁵ = 2¹⁶: две единицы в одном разряде дают одну единицу в следующем. Слагаемых два, а единица в записи одна.
- Складываем 243₅ + 134₅ столбиком, начиная с разряда единиц.
- Разряд 5⁰. 7 = 1 · 5 + 2: пишем 2, 1 переносим в следующий разряд.
- Разряд 5¹. 8 = 1 · 5 + 3: пишем 3, 1 переносим в следующий разряд.
- Разряд 5². 4 меньше 5: пишем 4, переноса нет. Итог: 432₅; проверка: 73 + 44 = 117 = 117.
243₅ + 134₅ = 432₅: проверка в десятичной системе — 73 + 44 = 117. Так же раскладывают коэффициент, который больше цифр системы: 7 · 5² = (5 + 2) · 5² = 1200₅.
Итого
- qᵏединица и k нулей
- qᵏ − 1k цифр q − 1
- qᵐ − qⁿm − n цифр q − 1 и n нулей
- Блокиразные разряды — цифры считают по блокам
- Пересечениесложение столбиком с переносом
- Задача темы21 четвёрка
Проверьте себя
Ответь сначала сам, потом открой ответ.
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Трёхзначные числа в системе с основанием 6
Сколько трёхзначных чисел в системе счисления с основанием 6?
Введите число.
Подсказка
Трёхзначные числа — от 100₆ = 6² до 555₆ = 6³ − 1.
Решение
Наименьшее трёхзначное число — 100₆ = 36, наибольшее — 555₆ = 6³ − 1 = 215. Всего чисел 215 − 36 + 1 = 180, то есть 6³ − 6².
print(6**3 - 6**2)Ответ: 180
Нули в записи 7⁸ + 7³ + 1
Сколько нулей содержит запись 7⁸ + 7³ + 1 в системе с основанием 7?
Введите число.
Подсказка
Каждое слагаемое — единица в своём разряде.
Решение
7⁸, 7³ и 1 = 7⁰ — единицы в разрядах 8, 3 и 0, разряды не пересекаются. Всего в записи девять цифр, три из них единицы, остальные шесть — нули.
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(7 ** 8 + 7 ** 3 + 1, 7).count(0))Ответ: 6
Единицы в 8¹⁵ + 2²⁰ − 7
Сколько единиц в двоичной записи 8¹⁵ + 2²⁰ − 7?
Введите число.
Подсказка
Приведи степени к основанию 2: 8 = 2³.
Решение
8¹⁵ = 2⁴⁵. Вычтем 7 через блоки: 2²⁰ − 7 = (2²⁰ − 2³) + 1. Получаем 2⁴⁵ + (2²⁰ − 2³) + 1: одна единица, семнадцать единиц в разрядах 19…3 и одна в разряде 0 — всего 19.
print(bin(8 ** 15 + 2 ** 20 - 7)[2:].count('1'))Ответ: 19
Наибольшее четырёхзначное шестеричное
Найди десятичное значение наибольшего четырёхзначного числа в системе с основанием 6.
Введите число.
Подсказка
Следующее число после наибольшего четырёхзначного — 10000₆ = 6⁴.
Решение
Наибольшее четырёхзначное шестеричное число — 5555₆: четыре наибольшие цифры. Следующее за ним — 10000₆ = 6⁴, поэтому 5555₆ = 6⁴ − 1 = 1295.
print(6 ** 4 - 1)Ответ: 1295
Запись 7⁵ и 7⁵ − 1
Как выглядит запись числа 7⁵ − 1 в системе счисления с основанием 7?
Введите число.
Подсказка
qᵏ − 1 записывается k цифрами q − 1.
Решение
7⁵ — это единица и пять нулей: 100000₇. Если вычесть 1, во всех пяти разрядах окажутся наибольшие цифры: 7⁵ − 1 = 66666₇. Программа собирает запись остатками от деления на 7.
n = 7**5 - 1s = ''while n > 0: s = str(n % 7) + s n = n // 7print(s)Ответ: 66666
Тройки в записи 4²⁰ − 4⁷
Сколько цифр 3 содержит запись 4²⁰ − 4⁷ в системе с основанием 4?
Введите число.
Подсказка
qᵃ − qᵇ — это a − b цифр q − 1, а за ними b нулей.
Решение
4²⁰ − 4⁷ = 4⁷ · (4¹³ − 1): тринадцать цифр 3, за ними семь нулей. Троек 13.
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(4 ** 20 - 4 ** 7, 4).count(3))Ответ: 13
Двойки в троичной записи
Значение выражения 9⁸ + 3¹⁰ − 3⁴ записали в системе счисления с основанием 3. Сколько цифр 2 содержится в этой записи?
Введите число.
Подсказка
Приведи 9⁸ к основанию 3.
Решение
9⁸ = 3¹⁶ — единица в разряде 16. 3¹⁰ − 3⁴ — шесть двоек в разрядах 9…4 и четыре нуля. Блоки не пересекаются, двоек 6.
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(9 ** 8 + 3 ** 10 - 3 ** 4, 3).count(2))Ответ: 6
Четвёрки в пятеричной записи
Значение выражения 25⁶ + 5⁸ − 5³ − 3 записали в системе счисления с основанием 5. Сколько цифр 4 содержится в этой записи?
Введите число.
Подсказка
Вычитаемое 5³ + 3 займи у 5⁴.
Решение
25⁶ = 5¹². Вычитаемое раскладываем: 5⁸ − 5³ − 3 = (5⁸ − 5⁴) + (5⁴ − 5³ − 3) = 44440000₅ + 3442₅. Четвёрок в записи 4 + 2 = 6.
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(25 ** 6 + 5 ** 8 - 5 ** 3 - 3, 5).count(4))Ответ: 6
Сложение в пятеричной системе
Выполни сложение 324₅ + 143₅.
Введите число.
Подсказка
Складывай столбиком: пиши остаток суммы от деления на 5, а целую часть переноси.
Решение
Единицы: 4 + 3 = 7 = 1 · 5 + 2, пишем 2, переносим 1. Пятёрки: 2 + 4 + 1 = 7 — пишем 2, переносим 1. Далее 3 + 1 + 1 = 5 — пишем 0, переносим 1. Получается 1022₅; проверка: 89 + 48 = 137 = 1022₅.
def digits(n, q): if n == 0: return [0] result = [] while n > 0: result.append(n % q) n = n // q result.reverse() return result s = int('324', 5) + int('143', 5)print(*digits(s, 5), sep='')Ответ: 1022
Единицы в 2¹⁵ + 2¹⁵ + 2³ − 1
Сколько единиц в двоичной записи 2¹⁵ + 2¹⁵ + 2³ − 1?
Введите число.
Подсказка
Два одинаковых слагаемых складываются с переносом.
Решение
2¹⁵ + 2¹⁵ = 2¹⁶ — блоки совпали, и две единицы дали одну в следующем разряде. 2³ − 1 = 111₂. Всего единиц 1 + 3 = 4.
print(bin(2 ** 15 + 2 ** 15 + 2 ** 3 - 1)[2:].count('1'))Ответ: 4