Задача #2960
Комбинаторика
(О. Лысенков) Сколько существует пятизначных двенадцатеричных чисел, в которых не более 2-х раз нечетные цифры стоят рядом.
В ответе укажите только число.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
206064
from itertools import product
k = 0
for i in product('0123456789AB',repeat = 5):
s = ''.join(i)
if s[0] != '0':
for j in '13579B':
s = s.replace(j,'*')
#if s.count('**') <= 2: #вот так хотелось бы, НО s.count(sub) находит количество
#непересекающихся вхождений подстроки sub в строку s, то есть '***'.count('**') вернёт 1, а не 2,
#а '****'.count('**') равно 2. В данном случае как пара считается 1 и 2 звёздочка, 3 и 4 звёздочка.
#Вторая и третья звёздочка хоть и образуют пару, но имеют пересечение с 1-2.
#То есть s.count('**') не подходит, поэтому будем делать так:
count = 0 #считаем число нечётных цифр, стоящих рядом
for j in range(len(s) - 1): #у последнего элемента строки нет соседа справа, поэтому len(s) - 1
if s[j] + s[j + 1] == '**':
count += 1
if count <= 2:
k += 1
print(k)