Задача #1911
Комбинаторика
(М. Паршиков) Алиса составила все пятибуквенные слова из букв П, Р, И, В, Ы, Ч, К, А, записала их в алфавитном порядке и пронумеровала. После этого Алиса удалила каждое пятое слово и пронумеровала новый список.
Вот начало списка:
1. ААААА
2. ААААВ
3. ААААИ
4. ААААК
5. ААААР (удалилось слово ААААП)
Под каким номером идет первое слово, в котором все буквы различные и согласные?
Решение
Ответ
Способ 1:
from itertools import product
n = 0
for word in product(sorted('ПРИВЫЧКА'), repeat = 5):
n += 1
if n % 5 != 0 and len(set(word)) == 5 and all(x not in word for x in 'ИЫА'):
print(n - n // 5)
break
Способ 2:
Заменим буквы на цифры: А - 0, В - 1, И - 2, К - 3, П - 4, Р - 5, Ч - 6, Ы - 7. Далее составим минимальное число из цифр 1,3,4,5,6 и определим его номер: int('13456', 8) = 5934, место 5935 - значит данное слово будет удалено. Тогда проверим int('13465', 8) = 5941, место 5942. Осталось определить количество удаленных слов и отнять: 5942 - (5942 // 5) = 4754