К содержанию

Подтема 4 из 6

Числа в системе счисления

Запись числа как слово из цифр: первая цифра не ноль, цифры без повторов, порядок и чётность.

Число как слово

Сколько существует четырёхзначных чисел в шестеричной системе?

Запись числа — слово из цифр, но первая цифра не может быть нулём. В системе с основанием q цифры — 0, 1, …, q − 1. Код может начинаться с нуля (007), а запись трёхзначного числа — нет: начальный ноль не добавляет разряд.

Поэтому четырёхзначных шестеричных чисел 5 · 6³ = 1080: на первое место — пять ненулевых цифр, на остальные — все шесть.

Цифры числами

Цифры удобно перебирать числами: product(range(q), repeat=n). Тогда «цифра больше 12» — это d > 12, а «цифра D» в шестнадцатеричной системе — значение 13.

from itertools import product count = 0for digits in product(range(6), repeat=4):    if digits[0] != 0:        count += 1print(count)
1080
Тонкости:цифры строками

Если цифры записаны символами, '2' + '3' даёт строку '23', а не 5. Перевод записи в число — int(запись, основание):

print('2' + '3', int('2') + int('3'))print(int('1032', 6), int('D', 16), int('A0', 16))
23 5 236 13 160

Цифры без повторов

Если цифры не повторяются, начальный ноль всё равно исключают отдельно. Четырёхзначных шестеричных чисел с различными цифрами 5 · 5 · 4 · 3 = 300: первая — любая, кроме нуля; вторая — любая, кроме первой, ноль уже можно.

from itertools import permutations count = 0for digits in permutations(range(6), 4):    if digits[0] != 0:        count += 1print(count)
300

Порядок цифр

При строгом убывании набор цифр выстраивается единственным способом, поэтому чисел столько же, сколько наборов.

Цифры 5, 3, 2, 0 можно расставить 4! = 24 способами, но строго убывают они только в одном — 5320.

Четырёхзначных шестеричных чисел со строго убывающими цифрами — C₆⁴ = 15: ноль окажется последним. При строгом возрастании ноль встал бы первым, поэтому цифры берут из 1–5: C₅⁴ = 5.

from itertools import product down = 0up = 0for d in product(range(6), repeat=4):    if d[0] != 0 and d[0] > d[1] > d[2] > d[3]:        down += 1    if d[0] != 0 and d[0] < d[1] < d[2] < d[3]:        up += 1print(down, up)
15 5

Чётность

Ноль — чётная цифра, а чётность цифры и чётность числа — разное. Условие о чётных цифрах проверяют по каждой цифре: d % 2 == 0.

Чётность всего числа при чётном основании решает последняя цифра, а при нечётном — сумма цифр. Например, 12₃ = 5: последняя цифра чётная, а число нечётное.

Тонкости:почему решает сумма цифр

Запись d₁ · q² + d₂ · q + d₃. При чётном q первые слагаемые чётные, всё решает d₃. При нечётном q все степени основания нечётные, и каждое слагаемое имеет ту же чётность, что его цифра.

Если чётные и нечётные цифры чередуются, считают по двум схемам. Четырёхзначные шестеричные числа с различными цифрами: схема «чётная, нечётная, …» — 2 · 3 · 2 · 2 = 24 (первая чётная не ноль), схема «нечётная, чётная, …» — 3 · 3 · 2 · 2 = 36. Всего 60.

from itertools import permutations count = 0for digits in permutations(range(6), 4):    if digits[0] != 0:        good = True        for i in range(3):            if digits[i] % 2 == digits[i + 1] % 2:                good = False                break        if good:            count += 1print(count)
60

Рядом с цифрой

Условие «рядом с цифрой 5 нет нечётных» проверяют по соседям этой цифры. Позицию даёт d.index(5), соседи — позиции i - 1 и i + 1, если они есть. Пройди проверку числа 2501₆ по шагам:

d = (2, 5, 0, 1)i = d.index(5)good = Truefor j in (i - 1, i + 1):    if 0 <= j < 4 and d[j] % 2 == 1:        good = Falseprint(good)
True

Посчитаем четырёхзначные шестеричные числа с ровно одной цифрой 5, рядом с которой только чётные:

from itertools import product count = 0for d in product(range(6), repeat=4):    if d[0] == 0 or d.count(5) != 1:        continue    i = d.index(5)    good = True    for j in (i - 1, i + 1):        if 0 <= j < 4 and d[j] % 2 == 1:            good = False    if good:        count += 1print(count)
201

continue сразу переходит к следующему числу, если первая цифра ноль или пятёрок не одна. Проверка 0 <= j < 4 отбрасывает несуществующих соседей у крайней цифры.

Итого

  • n-значных чисел(q − 1) · qⁿ⁻¹: первая цифра не ноль
  • Переборproduct(range(q), repeat=n), цифры — числа
  • Строгий порядокчисел столько, сколько наборов цифр
  • Чётность числачётное основание — последняя цифра, нечётное — сумма
  • Соседи цифрыпозиции i − 1 и i + 1, если есть

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Сколько существует четырёхзначных шестеричных чисел?
ОтветСкрыть ответ
Ответ
1080: первая цифра — 5 вариантов (не 0), остальные — по 6: 5 · 6³.
Вопрос 2
Код длины 3 может начинаться с нуля, а трёхзначное число — нет. Почему?
ОтветСкрыть ответ
Ответ
Начальный ноль не добавляет разряд: 007 — это однозначное число 7, а как код — три символа.
Вопрос 3
Какие цифры шестнадцатеричной системы имеют значение больше 12?
ОтветСкрыть ответ
Ответ
D, E, F — значения 13, 14, 15.
Вопрос 4
Чётно ли число 2111₃? Ответь по цифрам, затем проверь переводом.
ОтветСкрыть ответ
Ответ
Нечётно: при нечётном основании решает сумма цифр, 2 + 1 + 1 + 1 = 5. И правда, 2111₃ = 67.
Вопрос 5
Сколько трёхзначных пятеричных чисел со строго убывающими цифрами?
ОтветСкрыть ответ
Ответ
10: любые три разные цифры из 0–4 выстраиваются по убыванию одним способом, и ноль окажется последним: C₅³ = 10.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Трёхзначные пятеричные числа

Сколько существует положительных трёхзначных чисел в пятеричной системе?

Введите число.

Ровно одна цифра 6

Сколько трёхзначных восьмеричных чисел содержит ровно одну цифру 6? Остальные цифры могут повторяться.

Введите число.

Различные 12-ричные цифры, две больше 8

Сколько существует 12-ричных четырёхзначных чисел, все цифры которых различны, а ровно две цифры имеют значение больше 8?

Введите число.

Различные цифры

Сколько существует четырёхзначных восьмеричных чисел, все цифры которых различны?

Введите число.

Последняя цифра 0, длина не задана

Сколько существует натуральных чисел, семеричная запись которых содержит не менее двух цифр, все цифры различны, а последняя цифра — 0?

Введите число.

Строго возрастающие цифры

Сколько существует трёхзначных семеричных чисел со строго возрастающими цифрами?

Введите число.

Чётные семеричные четырёхзначные

Сколько существует чётных четырёхзначных чисел в семеричной системе?

Введите число.

Две семёрки без чётных соседей

Сколько существует восьмеричных пятизначных чисел, в записи которых ровно две цифры 7, при этом никакая чётная цифра не стоит рядом с цифрой 7?

Введите число.