Определить количество пятизначных чисел в девятеричной системе счисления
Определите количество пятизначных чисел, записанных в девятеричной системе счисления, которые не начинаются с нечётных цифр, не оканчиваются цифрами 1 или 8, а также содержат в своей записи не более одной цифры 3. Правильный ответ: 18944
Не могу найти ошибку в своем коде:
import itertools
l = list(itertools.product('012345678', repeat=5))
fin = []
for i in l:
if (i[0] in '02468') and (i[-1] not in '18') and (i.count('3') <= 1):
fin.append(i)
print(len(fin))
Ответы (2 шт):
Автор решения: Qwertiy
→ Ссылка
А ведь можно и по формуле посчитать: tio.run
n = 9
l = 5
print(
len("2468") # first digit
* ( # numbers without digit 3 in the middle digits
(n-1)**(l-2) ## X...Y - digits at ... if have no 3 in them
* (n-2) # last digit: exclude 1 and 8, allow 3
+ # numbers with digit 3 in the middle digits
(n-1)**(l-3) # save a slot for 3 in ... of X...Y
* (l-2) # chose postion for a 3
* (n-3) # last digit: exclude 1, 8 and 3
)
)
Если убрать комментарии, то останется так: tio.run
n = 9
l = 5
print(len("2468") * ((n-1)**(l-2) * (n-2) + (n-1)**(l-3) * (l-2) * (n-3)))
Автор решения: Nikolas
→ Ссылка
Просто убрать в проверке первого числа ноль, число не может начинаться с нуля.
import itertools
l = list(itertools.product('012345678', repeat=5))
fin = []
for i in l:
if (i[0] in '2468') and (i[-1] not in '18') and (i.count('3') <= 1):
fin.append(i)
print(len(fin)