Задание №8 — Комбинаторика
Сколько существует различных четырёхзначных чисел, записанных в восьмеричной системе счисления, в записи которых есть ровно две одинаковые цифры, причём стоящие рядом?
Правильный ответ
882
Пояснение
Решение:
Число четырёхзначное и записано в восьмеричной системе: цифры берутся из набора , а первая цифра не ноль. Условие «есть ровно две одинаковые цифры, причём стоящие рядом» значит, что какая-то цифра встречается дважды подряд, а две оставшиеся цифры различны и отличны от неё.
Пара соседних одинаковых цифр занимает позиции 1–2, 2–3 или 3–4 — три варианта расположения. В каждом из них повторяющуюся цифру выбираем 8 способами, а две оставшиеся позиции заполняем разными цифрами способами: получается наборов.
Осталось выбросить записи, начинающиеся с нуля. В каждом из трёх расположений их ровно 42: если ноль входит в пару, то пара — это «00», а две свободные позиции заполняются способами; если ноль стоит вне пары, то цифру пары выбираем из семи ненулевых, а последнюю свободную цифру — шестью способами, снова . Значит, лишних наборов , а искомое количество равно .
from itertools import product
from collections import Counter
count = 0
for n in product(range(8), repeat=4):
if n[0] == 0:
continue
c = Counter(n)
if sorted(c.values()) != [1, 1, 2]: # ровно одна пара одинаковых
continue
d = [k for k, v in c.items() if v == 2][0]
i, j = [k for k, x in enumerate(n) if x == d]
if j - i == 1: # цифры пары стоят рядом
count += 1
print(count) # 882
Ответ: 882