Паша составляет 6-буквенные слова из букв слова МАШИНА так, что буквы на позициях одинаковой чётности расположены в алфавитном порядке. Сколько различных слов может составить Паша, если каждую букву можно использовать неограниченное количество раз?
Решение руками
В задаче нужно на 6 позиций букв расставить их так, чтобы на местах одинаковой чётности буквы стояли в алфавитном порядке.
В таком случае, места в слове можно разбить на 2:
1) 3 места с нечётными номерами (1, 3, 5)
2) 3 места с чётными номерами (2, 4, 6)
Тогда достаточно будет найти количество вариантов получить алфавитный порядок на местах одной из чётностей, а другой вариант будет таким же.
Для получения задачи, рассмотрим, какая буква стоит на первом месте, затем какая буква может стоять на втором месте, и тогда посчитаем количество букв, которое может стоять на последнем месте.
Составим следующую таблицу, буквы из верхней строки стоят на первом месте, буквы из левого столбца – на втором месте:
А | И | М | Н | Ш | |
А | 5 | — | — | — | — |
И | 4 | 4 | — | — | — |
М | 3 | 3 | 3 | — | — |
Н | 2 | 2 | 2 | 2 | — |
Ш | 1 | 1 | 1 | 1 | 1 |
После сложения всех чисел из таблицы, получим способов расставить буквы в алфавитном порядке.
Тогда общее количество слов получим произведением , так как нужно расставить буквы в алфавитном порядке два раза, в итоге получим
способов, что и будет ответом.
Решение через циклы
a = ’МАШИНА’
count = set()
for x1 in a:
for x2 in a:
for x3 in a:
for x4 in a:
for x5 in a:
for x6 in a:
s = x1+x2+x3+x4+x5+x6
if (s[0] <= s[2] <= s[4]) and (s[1] <= s[3] <= s[5]):# проверка, что буквы на позициях одинаковой чётности записаны в алфавитном порядке
count.add(s)
print(len(count))
Решение через itertools
from itertools import product
ans = []
for i in product(’МАШИНА’, repeat = 6):
s = ’’.join(i)
s1 = s[0::2] # срез чётных индексов слова
s2 = s[1::2] # срез нечётных индексов слова
if s1 == ’’.join(sorted(s1)) and s2 == ’’.join(sorted(s2)):
ans.append(s)
print(len(set(ans)))