Тема 8. Комбинаторика

8.02 Подсчет количества слов/чисел

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела комбинаторика
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 41#7502Максимум баллов за задание: 1

Оксана составляет 5-буквенные слова из букв М, Н, О, Г, Т, Ч, К, И. Каждая из букв может встречаться в слове не более одного раза. Сколько различных слов может составить Оксана?

Показать ответ и решение

На первое место Оксана ставит одну из 8  букв, на второе — одну из 7  оставшихся, т.к. одна буква уже использована. По той же логике, на третье — одну из 6  оставшихся, на четвёртое — одну из 5  оставшихся и на пятое одну из 4  оставшихся букв. Всего Оксана может составить 8 ⋅ 7 ⋅ 6 ⋅ 5 ⋅ 4 = 6720  различных слов.
Решение кодом через циклы:

Для решения задачи с помощью циклов создаём пустое множество ans, куда будем добавлять все допустимые слова. Строка alf = ’МНОГТЧКИ’ содержит все доступные буквы. Используем 5 вложенных циклов, по одному на каждую позицию слова (x1, x2, x3, x4, x5). На каждой итерации формируем текущее слово: w = x1+x2+x3+x4+x5. Проверяем условие:

Все буквы уникальны len(w) == len(set(w)). Функция set() создаёт множество уникальных элементов, поэтому если длина множества совпадает с длиной слова, значит буквы не повторяются.

Если слово удовлетворяет условию, добавляем его в множество ans. После завершения перебора выводим количество элементов множества, что соответствует числу допустимых слов.

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’МНОГТЧКИ’

# Перебор всех 5-буквенных комбинаций
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    # Формируем слово из текущей комбинации букв
                    w = x1 + x2 + x3 + x4 + x5
                    # Проверяем условие: все буквы уникальны
                    if len(w) == len(set(w)):
                        ans.add(w)
# Выводим количество уникальных слов
print(len(ans))

Решение кодом через itertools:

Для решения задачи используем модуль itertools и функцию permutations, которая генерирует все возможные перестановки указанной длины без повторений. Создаём пустое множество ans. Для каждой перестановки добавляем её в множество. После перебора выводим длину множества, что соответствует числу допустимых слов.

from itertools import permutations

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’МНОГТЧКИ’

# Перебираем все перестановки длины 5 без повторений
for x in permutations(alf, 5):
    ans.add(x)

# Выводим количество уникальных слов
print(len(ans))

Ответ: 6720

Ошибка.
Попробуйте повторить позже

Задача 42#7629Максимум баллов за задание: 1

Друг составляет пары чисел, используя цифры от 0  до 9  . Первое число состоит из 2  цифр, а второе — из 7  . Цифры в каждом из чисел могут использоваться любое количество раз, причём второе число не содержит в себе чётных цифр. Сколько различных пар чисел друг может составить?

Примечание: в данной задаче число может начинаться с нуля.

Показать ответ и решение

В первом числе друг может на первое и второе место поставить по 10  цифр. Значит первое число можно составить 10 ⋅ 10 = 100  различными способами. Во втором числе на каждой из позиций может стоять любая из 5 нечётных цифр. Значит второе число можно составить 5 ⋅ 5 ⋅ 5 ⋅ 5 ⋅ 5 ⋅ 5 ⋅ 5 = 78125  различными способами.

Представим, что первые числа — чашки, а вторые числа — блюдца. Сколько различных вариаций чашка+блюдце можно составить?

Можно составить 100 ⋅ 78125 = 7812500  различных пар чисел (блюдец с чашкой).
Решение кодом через циклы:

Для решения задачи с помощью циклов создаём пустое множество ans, куда будем добавлять все допустимые пары чисел. Строки alf1 = ’0123456789’ и alf2 = ’13579’ содержат доступные цифры для первого и второго числа соответственно. Для первого числа используем два вложенных цикла по переменным x1 и x2, формируя число w1 = x1+x2. Для второго числа используем семь вложенных циклов по переменным y1, ..., y7, формируя число w2 = y1+y2+...+y7. Добавляем пару (w1, w2) в множество ans. После завершения перебора выводим количество элементов множества.

# Создаем множество для хранения уникальных пар чисел
ans = set()
# Цифры для первого числа
alf1 = ’0123456789’
# Цифры для второго числа (только нечётные)
alf2 = ’13579’

# Перебор всех возможных 2-значных чисел
for x1 in alf1:
    for x2 in alf1:
        w1 = x1 + x2 # Формируем первое число
        # Перебор всех возможных 7-значных чисел из нечётных цифр
        for y1 in alf2:
            for y2 in alf2:
                for y3 in alf2:
                    for y4 in alf2:
                        for y5 in alf2:
                            for y6 in alf2:
                                for y7 in alf2:
                                    w2 = y1 + y2 + y3 + y4 + y5 + y6 + y7
                                    # Добавляем пару чисел в множество
                                    ans.add((w1, w2))
# Выводим количество уникальных пар чисел
print(len(ans))

Решение кодом через itertools:

Используем модуль itertools и функцию product для генерации всех возможных комбинаций цифр с повторениями. Создаём пустое множество ans. Перебираем все пары чисел: для первого числа — все комбинации длины 2 из alf1, для второго числа — все комбинации длины 7 из alf2. Каждую пару добавляем в множество. После перебора выводим длину множества.

from itertools import product

# Создаем множество для хранения уникальных пар чисел
ans = set()
# Цифры для первого числа
alf1 = ’0123456789’
# Цифры для второго числа (только нечётные)
alf2 = ’13579’

# Перебираем все возможные 2-значные числа
for x in product(alf1, repeat=2):
    # Перебираем все возможные 7-значные числа из нечётных цифр
    for y in product(alf2, repeat=7):
        # Добавляем пару чисел в множество
        ans.add((x, y))

# Выводим количество уникальных пар чисел
print(len(ans))

Ответ: 7812500

Ошибка.
Попробуйте повторить позже

Задача 43#7630Максимум баллов за задание: 1

Друг составляет пары чисел, используя цифры от 1 до 7. Первое число состоит из 3 цифр, а второе — из 5. Цифры в каждом из чисел могут повторяться, причём второе число состоит только из нечётных цифр. Сколько различных пар чисел друг может составить?

Показать ответ и решение

В первом числе друг может поставить на каждую из 3 позиций любую из 7 цифр. Значит первое число можно составить 7 ⋅ 7 ⋅ 7 = 343  различными способами. Во втором числе на каждой из 5 позиций может стоять одна из 4 нечётных цифр. Значит второе число можно составить 4 ⋅ 4 ⋅ 4 ⋅ 4 ⋅ 4 = 1024  различными способами.

Представим, что первые числа — чашки, а вторые числа — блюдца. Сколько различных вариаций кружка+чашка можно составить?

Можно составить 343 ⋅ 1024 = 351232  различных пар чисел (блюдец с чашкой).
Решение кодом через циклы:

Для решения задачи с помощью циклов создаём пустое множество ans, куда будем добавлять все допустимые пары чисел. Строки alf1 = ’1234567’ и alf2 = ’1357’ содержат доступные цифры для первого и второго числа соответственно. Для первого числа используем три вложенных цикла по переменным x1, x2, x3, формируя число w1 = x1+x2+x3. Для второго числа используем пять вложенных циклов по переменным y1, ..., y5, формируя число w2 = y1+y2+...+y5. Каждую пару (w1, w2) добавляем в множество ans. После завершения перебора выводим количество элементов множества.

# Создаем множество для хранения уникальных пар чисел
ans = set()
# Цифры для первого числа
alf1 = ’1234567’
# Цифры для второго числа (только нечётные)
alf2 = ’1357’

# Перебор всех возможных 3-значных чисел
for x1 in alf1:
    for x2 in alf1:
        for x3 in alf1:
            w1 = x1 + x2 + x3 # Формируем первое число
            # Перебор всех возможных 5-значных чисел из нечётных цифр
            for y1 in alf2:
                for y2 in alf2:
                    for y3 in alf2:
                        for y4 in alf2:
                            for y5 in alf2:
                                w2 = y1 + y2 + y3 + y4 + y5
                                # Добавляем пару чисел в множество
                                ans.add((w1, w2))
# Выводим количество уникальных пар чисел
print(len(ans))

Решение кодом через itertools:

Для решения задачи с помощью модуля itertools используем функцию product, которая генерирует все возможные комбинации с повторениями. Создаём пустое множество ans. Перебираем все комбинации длины 3 из alf1 для первого числа и все комбинации длины 5 из alf2 для второго числа. Каждую пару добавляем в множество. После перебора выводим размер множества.

from itertools import product

# Создаем множество для хранения уникальных пар чисел
ans = set()
# Цифры для первого числа
alf1 = ’1234567’
# Цифры для второго числа (только нечётные)
alf2 = ’1357’

# Перебор всех возможных 3-значных чисел
for x in product(alf1, repeat=3):
    # Перебор всех возможных 5-значных чисел из нечётных цифр
    for y in product(alf2, repeat=5):
        # Добавляем пару чисел в множество
        ans.add((x, y))

# Выводим количество уникальных пар чисел
print(len(ans))

Ответ: 351232

Ошибка.
Попробуйте повторить позже

Задача 44#7631Максимум баллов за задание: 1

Друг составляет четырёхзначные числа, используя цифры от 0 до 9 включительно. Цифры в числе могут повторяться. Сколько различных чисел, не начинающихся с цифры 7, друг может составить?

Показать ответ и решение

Первой цифрой числа может быть любая из цифр, кроме 7  и 0  , т.е. любая из 8  оставшихся. На 2  , 3  и 4  месте в слове может стоять любая из 10  цифр. Значит друг может составить 8 ⋅ 10 ⋅ 10 ⋅ 10 = 8000  различных чисел.
Решение кодом через циклы:

Для решения задачи создаём пустое множество ans, которое будет хранить все уникальные числа. Используем строку alf = ’0123456789’, которая содержит все доступные цифры. Далее организуем четыре вложенных цикла, каждый из которых перебирает одну цифру числа:

  1. Первый цикл x1 выбирает первую цифру числа. Проверка условия осуществляется внутри цикла: если x1 != ’0’ и x1 != ’7’, число допускается для добавления.
  2. Циклы x2, x3, x4 перебирают вторую, третью и четвёртую цифры числа без ограничений, так как повторение цифр разрешено и условие на первую цифру уже проверено.

После формирования числа w = x1 + x2 + x3 + x4 выполняется проверка условия: первая цифра не равна ’0’ и не равна ’7’. Если условие выполнено, число добавляется в множество ans. Множество гарантирует уникальность чисел, поэтому дубликаты автоматически исключаются. После завершения всех циклов выводим длину множества len(ans), которая и будет количеством допустимых четырёхзначных чисел.

# Создаем множество для хранения уникальных чисел
ans = set()
# Доступные цифры
alf = ’0123456789’

# Перебор первой цифры числа
for x1 in alf:
    # Перебор второй цифры числа
    for x2 in alf:
        # Перебор третьей цифры числа
        for x3 in alf:
            # Перебор четвертой цифры числа
            for x4 in alf:
                # Формируем число
                w = x1 + x2 + x3 + x4
                # Проверяем условие: первая цифра не 0 и не 7
                if x1 != ’0’ and x1 != ’7’:
                    # Добавляем число в множество
                    ans.add(w)
# Выводим количество уникальных чисел
print(len(ans))

Решение кодом через itertools:

Для решения с использованием модуля itertools удобно использовать функцию product, которая создаёт все возможные комбинации с повторениями заданной длины. Строка alf = ’0123456789’ содержит все цифры. Функция product(alf, repeat=4) создаёт все 4-значные комбинации. Для каждой комбинации проверяем, что первая цифра (x[0]  ) не равна ’0’ и не равна ’7’. Допустимые комбинации добавляем в множество ans. После перебора всех комбинаций выводим размер множества.

from itertools import product

# Создаем множество для хранения уникальных чисел
ans = set()
# Доступные цифры
alf = ’0123456789’

# Перебор всех 4-значных комбинаций
for x in product(alf, repeat=4):
    # Проверяем условие: первая цифра не 0 и не 7
    if x[0] != ’0’ and x[0] != ’7’:
        # Добавляем число в множество
        ans.add(x)

# Выводим количество уникальных чисел
print(len(ans))

Ответ: 8000

Ошибка.
Попробуйте повторить позже

Задача 45#12824Максимум баллов за задание: 1

Олег составляет 4-буквенные слова, в которых есть только буквы К, Р, А, Б, причём буква К используется в каждом слове ровно 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Олег?

Показать ответ и решение

Мы имеем 4 позиции, на которые можно поставить любую из 4 букв алфавита. При этом, нам надо чтобы в каждом слове была обязательно только одна буква К. Если мы поставим К на первую позицию, то на три остальных мы можем поставить любую из оставшихся трёх букв. Получается что всего слов с единственной К на первой позиции 1 ⋅3⋅3⋅3 = 27  . Проделываем те же самые действия для оставшихся позиций буквы К, получается 27⋅4 = 108  .
Решение кодом через циклы:

Для решения задачи создаём пустое множество ans, куда будем добавлять все допустимые слова. Строка alf = ’КРАБ’ содержит все доступные буквы. Используем 4 вложенных цикла, по одному на каждую позицию слова (x1, x2, x3, x4). На каждой итерации формируем текущее слово: w = x1+x2+x3+x4. Проверяем условие:

  • Слово содержит ровно одну букву К: w.count(’К’) == 1.

Если условие выполнено, добавляем слово в множество ans. После завершения перебора выводим количество элементов множества, что соответствует числу допустимых слов.

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’КРАБ’

# Перебор всех 4-буквенных комбинаций
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                # Формируем слово из текущей комбинации букв
                w = x1 + x2 + x3 + x4
                # Проверяем условие: буква К встречается ровно один раз
                if w.count(’К’) == 1:
                    ans.add(w)
# Выводим количество уникальных слов
print(len(ans))

Решение кодом через itertools:

Используем модуль itertools и функцию product для генерации всех возможных комбинаций длины 4 с повторениями. Создаём пустое множество ans. Для каждой комбинации проверяем, что буква К встречается ровно один раз (x.count(’К’) == 1). Если условие выполнено, добавляем комбинацию в множество. После перебора выводим длину множества.

from itertools import product

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’КРАБ’

# Перебираем все возможные комбинации длины 4 с повторениями
for x in product(alf, repeat=4):
    # Проверяем условие: буква К встречается ровно один раз
    if x.count(’К’) == 1:
        ans.add(x)

# Выводим количество уникальных слов
print(len(ans))

Ответ: 108

Ошибка.
Попробуйте повторить позже

Задача 46#13045Максимум баллов за задание: 1

Глеб составляет 5  -ти буквенные слова из букв К, Р, А, Б. Каждая из них может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Глеб?

Показать ответ и решение

На каждое место из 5  -ти Глеб может поместить одну из четырёх букв. То есть на первое место может поставить   4  буквы, на второе - 4  буквы и т.д. Итого получается:

4∗ 4∗ 4∗4 ∗4 = 45 = 210 = 1024  .
Решение кодом через циклы:

Для решения задачи создаём пустое множество ans, куда будем добавлять все допустимые слова. Строка alf = ’КРАБ’ содержит все доступные буквы. Используем 5 вложенных циклов, по одному на каждую позицию слова (x1, x2, x3, x4, x5). На каждой итерации формируем текущее слово: w = x1 + x2 + x3 + x4 + x5. Так как условие позволяет использовать любую букву любое количество раз, дополнительных проверок не требуется. Добавляем слово в множество ans. После завершения перебора выводим количество элементов множества, что соответствует числу допустимых слов.

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’КРАБ’

# Перебор всех 5-буквенных комбинаций
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    # Формируем слово из текущей комбинации букв
                    w = x1 + x2 + x3 + x4 + x5
                    # Добавляем слово в множество, так как все комбинации допустимы
                    ans.add(w)
# Выводим количество уникальных слов
print(len(ans))

Решение кодом через itertools:

Используем модуль itertools и функцию product для генерации всех возможных комбинаций длины 5 с повторениями. Создаём пустое множество ans. Для каждой комбинации сразу добавляем её в множество ans, так как все комбинации допустимы. После перебора выводим длину множества.

from itertools import product

# Создаем множество для хранения уникальных слов
ans = set()
# Набор доступных букв
alf = ’КРАБ’

# Перебираем все возможные комбинации длины 5 с повторениями
for x in product(alf, repeat=5):
    # Добавляем комбинацию в множество
    ans.add(x)

# Выводим количество уникальных слов
print(len(ans))

Ответ: 1024

Ошибка.
Попробуйте повторить позже

Задача 47#19507Максимум баллов за задание: 1

Даны буквы P, Y, T, H, O, N. Какое количество различных 4-ёх буквенных слов можно составить из предложенных букв, учитывая, что каждая буква может встречаться в слове не более одного раза. В ответ запишите кол-во слов.

Показать ответ и решение

Решение аналитически:

У нас имеется 4 позиции и 6 букв. Каждую букву можно использовать не более одного раза. Посчитаем количество вариантов размещения 6 букв на 4 позициях: 6⋅5⋅4 ⋅3 = 360  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем 4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

ans = set() # Множество подходящих слов
alf = "PYTHON" # Алфавит к задаче
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                w = x1 + x2 + x3 + x4 # Формируем слово
                if len(w) == len(set(w)): # Если буквы не повторяются (set уберет повторяющиеся, если букв осталось столько, сколько и было - повторяющихся нет)
                    ans.add(w) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import permutations
ans = set() # Множество подходящих слов
alf = "PYTHON" # Алфавит к задаче
for x in permutations(alf, 4): # Получим все 4-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова
    ans.add(x) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Ответ: 360

Ошибка.
Попробуйте повторить позже

Задача 48#19508Максимум баллов за задание: 1

Даны буквы A, B, C, D. Напишите в ответе какое количество различных 5-ти буквенных слов можно составить из данных букв. Каждую букву можно использовать сколько угодно раз.

Показать ответ и решение

Решение аналитически:

У нас имеется 5 позиций и 4 буквы. Каждую букву можно использовать сколько угодно раз. Посчитаем количество вариантов размещения этих букв на 5 позициях: 4 ⋅4⋅4⋅4 ⋅4 = 45 = 210 = 1024  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

ans = set() # Множество подходящих слов
alf = ’ABCD’ # Алфавит к задаче
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    w = x1 + x2 + x3 + x4 + x5 # Формируем слово
                    ans.add(w) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
ans = set() # Множество подходящих слов
alf = "ABCD" # Алфавит к задаче
for x in product(alf, repeat = 5): # Получим все 5-буквенные слова
    ans.add(x) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Ответ: 1024

Ошибка.
Попробуйте повторить позже

Задача 49#19509Максимум баллов за задание: 1

Даны буквы Г, О, Т, С, М, С. Совпадающие буквы считайте разными буквами. Напишите в ответ сколько можно составить различных 4-ёх буквенных слов из данных букв при условии что первой буквой может быть только согласная. Каждую букву можно использовать максимум один раз.

Показать ответ и решение

Решение аналитически:

У нас имеется 4  позиций и 6  букв. Каждую букву можно использовать максимум один раз, при этом первой буквой должна быть согласная. Посчитаем количество вариантов размещения этих букв на 4 позициях: 5 ⋅5⋅4⋅3 = 300  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем 4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

ans = set() # Множество подходящих слов
# Чтобы для программы буквы С были разными, одну из них сделаем маленькой
alf = "ГОТСМc" # Алфавит к задаче
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                w = x1 + x2 + x3 + x4 # Формируем слово
                # Если буквы не повторяются (set уберет повторяющиеся, если букв осталось столько, сколько и было - повторяющихся нет) и первая буква не О
                if len(w) == len(set(w)) and x1 in "ГТСМc":
                    ans.add(w) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import permutations
ans = set() # Множество подходящих слов
# Чтобы для программы буквы С были разными, одну из них сделаем маленькой
alf = "ГОТСМc" # Алфавит к задаче
for x in permutations(alf, 4): # Получим все 4-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова
    if x[0] in "ГТСМc": # Первая буква не О
        ans.add(x) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Ответ: 300

Ошибка.
Попробуйте повторить позже

Задача 50#19511Максимум баллов за задание: 1

Даны буквы Ш, К, О, Л, К, О, В, О. Совпадающие буквы считайте разными буквами. Составьте всевозможные различные 8-ми буквенные слова с условием, что каждая буква в слове может встречаться строго один раз и первая и последняя буквы должны быть гласными. Запишите кол-во слов в ответ.

Показать ответ и решение

Решение аналитически:

У нас имеется 8  позиций и 8  букв. Каждую букву можно использовать строго один раз. Посчитаем количество вариантов размещения этих букв на 8  позициях (сначала расставим гласные по краям, а затем расставим остальные буквы): 3 ⋅6⋅5 ⋅4 ⋅3⋅2 ⋅1 ⋅2 = 4320  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем 8  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = "ШКОЛКОВО" # Алфавит к задаче
gl = "О" # Гласные буквы слова
count = 0 # Счётчик подходящих слов
# переборы для наших букв
for x1 in gl:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    for x6 in a:
                        for x7 in a:
                            for x8 in gl:
                                s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово
                                # Проверка, что каждая буква встречается столько же раз, сколько раз записана эта буква в начальном слове
                                if all(s.count(i) == a.count(i) for i in s):
                                    count += 1 # Увеличиваем счётчик
print(count)

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import permutations
count = 0 # Счётчик подходящих слов
for x in permutations("ШКОЛКОВО"): # Проходимся по различным перестановкам букв
    s = "".join(x) # join объединяет буквы
    if s[0] == "О" and s[-1] == "О": # Проверка по условию
        count += 1 # Увеличиваем счётчик
print(count)

Ответ: 4320

Ошибка.
Попробуйте повторить позже

Задача 51#19512Максимум баллов за задание: 1

Даны буквы И, Н, Ф, О, Р, М, А, Т, И, К, А. Совпадающие буквы считайте разными буквами. Сколько можно составить различных 10-ти буквенных слов из предложенных букв с условием, что каждая буква в слове может встречаться максимум один раз и на четных позициях могут стоять только согласные буквы? Счет позиций ведется с единицы. Кол-во слов запишите в ответ.

Показать ответ и решение

Решение аналитически:

У нас имеется 10 позиций и 11 букв, 5 гласных и 6 согласных. Каждую букву можно использовать максимум один раз. Посчитаем количество вариантов размещения этих букв на 10 позициях (сначала записываем для четных позиций, потом для нечетных): 6 ⋅6 ⋅5⋅5⋅4 ⋅4⋅3⋅3 ⋅2⋅2 = 518400  .

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import permutations
ans = set()
# Одинаковые буквы запишем в разном регистре
alf = "ИНФОРМАТиКа" # Алфавит из условия, сделаем буквы И разными, чтобы их различать
sogl = "НФРМТК" # Согласные буквы из нашего алфавита
for x in permutations(alf, 10): # Получим все 10-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова
    if x[1] in sogl and x[3] in sogl and x[5] in sogl and x[7] in sogl and x[9] in sogl: # Являются ли нужные буквы согласными
        ans.add(x) # Добавим слово к множеству
print(len(ans)) # Вывод количества слов

Ответ: 518400

Ошибка.
Попробуйте повторить позже

Задача 52#23495Максимум баллов за задание: 1

Максим Олегович составляет 6-буквенные слова, в которых есть только буквы М, А, Ш, И, Н, причём в слове должна быть хотя бы одна согласная буква. Все буквы могут встречаться в слове любое количество раз или не встречаться совсем, если соблюдаются условия. Сколько существует таких слов, в которых будет ровно одна гласная буква?

Показать ответ и решение

Решение аналитически:

 

Из условия мы понимаем, что в слове должно быть 5 согласных букв и одна гласная. Допустим гласная стоит на первом месте, тогда всего таких вариантов 2 * 3 * 3 * 3 * 3 * 3. Но гласная может стоять не только на первом месте, поэтому умножаем это число на 6. Тогда получаем 2 * 3 * 3 * 3 * 3 * 3 * 6 = 2916

 

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем 6  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = "МАШИН" # Алфавит к задаче
sogl = "МШН" # Согласные буквы нашего слова
gl = "АИ" # Гласные буквы нашего слова
count = 0 # Счётчик подходящих слов
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 sum(s.count(i) for i in sogl) >= 1 and sum(s.count(i) for i in gl) == 1:
                            count += 1 # Увеличим счётчик
print(count) # Вывод количества слов

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
ans = 0 # Счётчик подходящих слов
for i in product("МАШИН", repeat = 6): # Получим все 6-буквенные слова из заданного алфавита
    s = "".join(i)
    if s.count("М") >= 1 or s.count("Ш") >= 1 or s.count("Н") >= 1: # Есть ли в слове нужное количество букв
        k = s.count("А") + s.count("И")
        if k == 1: ans += 1 # Увеличим счётчик при соблюдении условия
print(ans) # Вывод количества слов

Ответ: 2916

Ошибка.
Попробуйте повторить позже

Задача 53#23992Максимум баллов за задание: 1

ТС составляет 7-буквенные слова из букв Т, О, С, Е, Р. Две одинаковые буквы не могут стоять рядом. Буква С может стоять только между буквами О и Е или Е и О (ОСЕ, ЕСО — можно, ОСО — нельзя). Сколько слов может составить ТС?

Показать ответ и решение

Решение через itertools

from itertools import product

ans = 0
for i in product(’ТОСЕР’, repeat=7):
    s = ’’.join(i)
    # Проверка на две буквы не могут стоять рядом
    if all(s.count(j * 2) == 0 for j in ’ТОСЕР’):
        # Очевидно, что С не может стоять на первом и последнем
        if s[0] != ’С’ and s[-1] != ’С’:
            # Проверка на букву С между ОЕ или ЕО
            flag = True
            for j in range(1, len(s) - 1):
                if s[j] == ’С’:
                    if (s[j - 1] == ’О’ and s[j + 1] == ’Е’) or \
                            (s[j - 1] == ’Е’ and s[j + 1] == ’О’):
                        # Если такая комбинация есть - проверяем дальше
                        continue
                    else:
                        # Если вокруг С стоит неподходящая - не подходит слово
                        flag = False
                        break
            if flag:
                ans += 1
print(ans)

Решение через циклы

a = ’ТОСЕР’ # наше слово
m = [x1+’С’+x2 for x1 in a for x2 in a if x1+x2 != ’ОЕ’ and x1+x2 != ’ЕО’] # запрещенные комбинации, которые не должны быть в слове если в слове есть С

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:
                        for x7 in a:
                            s = x1+x2+x3+x4+x5+x6+x7 # составляем слово
                            if sum(s.count(i*2) for i in a) == 0: # проверяем, что нет рядом стоящих одинаковых букв
                                # проверяем, что не одной запрещенной комбинации в слове нет и при этом C не на первом и не на последнем месте
                                if all(i not in s for i in m) and s[0] != ’С’ and s[-1] != ’С’:
                                    count.add(s)

print(len(count))

Ответ: 3804

Ошибка.
Попробуйте повторить позже

Задача 54#24409Максимум баллов за задание: 1

София составляет 8  -буквенные слова из букв Б, У, Р, Ж, А, З, И, Я. Все буквы могут встречаться в слове любое количество раз или не встречаться совсем. Сколько слов может составить София, если ее слово не может содержать сочетание букв БУРЖУИ?

Показать ответ и решение

Решение аналитически:

Сперва посчитаем общее количество слов. Поскольку всего букв 8  , а слово состоит из 8  букв, оно равно 88  .

Теперь посчитаем количество неподходящих слов, содержащих словосочетание БУРЖУИ. Словосочетание занимает        6  букв, на оставшиеся 2  буквы можно поставить любую из 8  букв. Само словосочетание можно поставить на три позиции. Получим такую картину:

Б  У  Р  Ж  У  И  8  8

8  Б  У  Р  Ж  У  И  8

8  8  Б  У  Р  Ж  У  И

То есть, общее количество неподходящих слов равно 3 ⋅8⋅8  .

Количество искомых слов равно разности между общим количеством слов и количеством неподходящих слов, то есть  8      2
8 − 3 ⋅8 = 16777024  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем 6  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = "БУРЖАЗИЯ" # Алфавит
count = 0 # Счётчик количества подходящих слов
# перебор наших букв для слова
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    for x6 in a:
                        for x7 in a:
                            for x8 in a:
                                s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Составляем слово
                                if "БУРЖУИ" not in s: # Проверка по условию
                                    count += 1 # Увеличим счётчик
print(count)

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
count = 0 # Счётчик количества подходящих слов
# Получим все 8-буквенные слова из заданного алфавита
for x in product("БУРЖАЗИЯ", repeat = 8):
    s = "".join(x) # join объединяет буквы
    if "БУРЖУИ" not in s:  # Проверка по условию
        count += 1 # Увеличим счётчик
print(count)

Ответ: 16777024

Ошибка.
Попробуйте повторить позже

Задача 55#25093Максимум баллов за задание: 1

Мышиный король составляет 7-буквенные слова из букв М, Ы, Ш, И, причём сочетание МЫШ обязательно должно быть в слове. Все буквы могут встречаться в слове любое количество раз или не встречаться совсем, если соблюдается условие. Сколько слов может составить Мышиный король?

Показать ответ и решение

Решение аналитически:

Посчитаем количество слов, в которых МЫШ встречается хотя бы один раз. Сочетание МЫШ может начинаться с 1-й, 2-й, 3-й, 4-й или 5-й позиции в 7-буквенном слове. Всего 5 возможных позиций:

МЫШxxxx,

xМЫШxxx,

xxМЫШxx,

xxxМЫШx,

xxxxМЫШ.

Для каждой из 5 позиций МЫШ, оставшиеся 4 буквы могут быть любыми из 4 возможных. Таким образом, для каждой позиции количество вариантов:  4
4  = 256  . Умножаем количество позиций на количество вариантов для оставшихся букв: 5 ⋅256 = 1280  .

Однако оставшиеся буквы могли сформировать новое сочетание МЫШ, такие слова были посчитаны дважды, поэтому необходимо исключить из получившегося количества слов слова, в которых МЫШ встречается дважды. Слова с тремя МЫШ невозможны.

Возможные позиции для двух МЫШ:

МЫШМЫШx

МЫШxМЫШ

xМЫШМЫШ

Итого 3 варианта. На каждую свободную букву 4 варианта. Всего: 3⋅4 = 12  слов.

Тогда итоговый ответ: 1280 − 12 = 1268.

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем 7  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

counter = 0 # Счётчик походящих слов
for a1 in ("МЫШИ"):
    for a2 in ("МЫШИ"):
        for a3 in ("МЫШИ"):
            for a4 in ("МЫШИ"):
                for a5 in ("МЫШИ"):
                    for a6 in ("МЫШИ"):
                        for a7 in ("МЫШИ"):
                            s = a1 + a2 + a3 + a4 + a5 + a6 + a7 # Формируем слово
                            if s.count("МЫШ") >= 1: # Проверяем главное условие задачи
                                counter += 1
print(counter)

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
count = set() # Множество подходящих слов
# Получим все 7-буквенные слова из нужного алфавита
for x in product("МЫШИ",repeat = 7):
    s = "".join(x) # join объединит буквы
    if "МЫШ" in s: # Проверяем главное условие задачи
        count.add(s) # Добавим слово к множеству
print(len(count)) # Вывод количества слов

Ответ: 1268

Ошибка.
Попробуйте повторить позже

Задача 56#25552Максимум баллов за задание: 1

Оксана составляет 5-буквенные слова из букв М, Н, О, Г, Т, Ч, К, И. Каждая из букв может встречаться в слове не более одного раза. Сколько различных слов может составить Оксана?

Показать ответ и решение

Решение аналитически:

Ставим на первое место 8 букв, на второе можно поставить 7 букв, на третье 6, на четвертое 5, на пятое 4. Ответ: 8*7*6*5*4.

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = "МНОГТЧКИ" # Алфавит
count = 0 # Счётчик подходящих слов
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    s = x1 + x2 + x3 + x4 + x5 # Составляем слово
                    if all(s.count(i) == 1 for i in s): # Проверяем, что каждая буква в слове встречается ровно 1 раз
                        count += 1 # Увеличим счётчик
print(count)

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import permutations
count = 0 # Счётчик подходящих слов
# Получим все 5-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова
for x in permutations("МНОГТЧКИ", r = 5):
    s = "".join(x) # join обьединяет буквы
    count += 1 # Увеличим счётчик
print(count)

Ответ: 6720

Ошибка.
Попробуйте повторить позже

Задача 57#25579Максимум баллов за задание: 1

Тимофей составляет 5-буквенные коды из букв Т, И, М, О, Ф, Е, Й. Буква Т должна входить в код не менее одного раза, а буква Й – не более одного раза. Сколько различных кодов может составить Тимофей?

Показать ответ и решение

Решение аналитически:

Рассмотрим каждую из ситуаций, в которых Т будет встречаться от 1 до 5 раз, а Й будет встречаться от 0 до 1 раза.

1 случай: Т - 1 раз

Если Й - 0 раз, то букву Т можно разместить на одно из 5 мест, для оставшихся 4 мест будет доступно 5 букв (все, кроме Т и Й), итого 55 = 3125  вариантов.

Если Й - 1 раз, то букву Т можно разместить на одно из 5 мест, Й - на одно из 4 мест, для оставшихся 3 мест будет доступно 5 букв, итого 54 ∗4 = 2500  вариантов.

2 случай: Т - 2 раз

Если Й - 0 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, для оставшихся 3 мест будет доступно 5 букв. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗24!-∗53 = 1250  вариантов.

Если Й - 1 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, Й на одно из 3 мест, для оставшихся 2 мест будет доступно 5 букв. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗24! ∗ 3∗52 = 750  вариантов.

3 случай: Т - 3 раз

Если Й - 0 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, третью букву Т на одно из 3 мест, для оставшихся 2 мест будет доступно 5 букв. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗4∗3∗52 = 250
  3!  вариантов.

Если Й - 1 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, третью букву Т на одно из 3 мест, Й на одно из 2 мест, для оставшегося места будет доступно 5 букв. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗43!∗3 ∗2 ∗5 = 100  вариантов.

4 случай: Т - 4 раз

Если Й - 0 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, третью букву Т на одно из 3 мест, четвертую букву Т на одно из 2 мест, для оставшегося места будет доступно 5 букв. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗4∗3∗2
  4!  ∗5 = 25  вариантов.

Если Й - 1 раз, то первую букву Т можно поставить на одно из 5 мест, вторую букву Т на одно из 4 мест, третью букву Т на одно из 3 мест, четвертую букву Т на одно из 2 мест, Й на одно оставшееся место. Итого, с учетом исключения вариантов, получившихся перестановкой букв Т между собой, получаем 5∗4∗43!∗2∗1 = 5  вариантов.

5 случай: Т - 5 раз - 1 возможный вариант

Суммируем все варианты: 3125+ 2500+ 1250+ 750+ 250 +100 + 25+ 5+ 1 = 8006  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

ans = 0 # Счётчик подходящих слов
for a1 in ("ТИМОФЕЙ"):
    for a2 in ("ТИМОФЕЙ"):
        for a3 in ("ТИМОФЕЙ"):
            for a4 in ("ТИМОФЕЙ"):
                for a5 in ("ТИМОФЕЙ"):
                    s = a1 + a2 + a3 + a4 + a5 # Формируем слово
                    if s.count("Т") >= 1 and s.count("Й") <= 1: # Проверка по условию
                        ans += 1 # Увеличим счётчик
print(ans)

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
count = 0 # Счётчик подходящих слов
# Получим все 5-буквенные слова
for x in product("ТИМОФЕЙ", repeat = 5):
    s = "".join(x) # join объединит буквы
    if s.count("Т") >= 1 and s.count("Й") <= 1: # Проверка по условию
     count += 1 # Увеличим счётчик
print(count)

Ответ: 8006

Ошибка.
Попробуйте повторить позже

Задача 58#25900Максимум баллов за задание: 1

Каждый день Матвей составляет задачки из букв П, Л, А, Н, И, М, Е, Т, Р, И, Я. Сколько различных 7-значных слов он может составить, если каждую согласную букву он должен использовать нечётное количество раз?

Показать ответ и решение

Решение аналитически:

В нашем слове 6 согласных букв (ПЛНМТР) и 4 уникальных гласных букв (АИЕЯ). Нам нужно составить 7-буквенное слово, значит, для того чтобы условие выполнилось, нам нужно использовать каждую согласную букву ровно по одному разу. Количество перестановок согласных букв среди 6 мест равна: 6! = 720  . На оставшееся место в любом слове мы можем расположить одну и 4 гласных букв. Количество слов, которое можно составить если гласная будет находиться на последнем месте: 6∗5 ∗4 ∗3∗ 2∗1 ∗4 = 2880  . Данное значение нужно умножить на количество вариантов слова, которые нам подходят. Всего таких вариантов слов 7. Умножаем количество слов в одно варианте на количество вариантов подходящих слов: 2880 ∗7 = 20160  .

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем 7  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = set() # Множество подходящих слов
for a1 in ("ПЛАНИМЕТРИЯ"):
    for a2 in ("ПЛАНИМЕТРИЯ"):
        for a3 in ("ПЛАНИМЕТРИЯ"):
            for a4 in ("ПЛАНИМЕТРИЯ"):
                for a5 in ("ПЛАНИМЕТРИЯ"):
                    for a6 in ("ПЛАНИМЕТРИЯ"):
                        for a7 in ("ПЛАНИМЕТРИЯ"):
                            slovo = a1 + a2 + a3 + a4 + a5 + a6 + a7 # Формируем слово
                            if all(slovo.count(x) % 2 == 1 for x in "ПЛНМТР"): # Если каждая согласная буква в слове используется нечётное кол-во раз
                                a.add(slovo) # Добавим слово в множество
print(len(a)) # Вывод нужного количества

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
count = set() # Множество подходящих слов
# Получим все 7-буквенные слова
for x in product("ПЛАНИМЕТРИЯ", repeat = 7):
    s = "".join(x) # join объединит буквы
    if all(s.count(i) % 2 != 0 for i in "ПЛНМТР"): # Если каждая согласная буква в слове используется нечётное кол-во раз
        count.add(s) # Добавим слово в множество
print(len(count)) # Вывод нужного количества

Ответ: 20160

Ошибка.
Попробуйте повторить позже

Задача 59#25927Максимум баллов за задание: 1

Таня составляет слова(не обязательно осмысленные) из букв А, Б, В, Г, Д, Е максимальной(но не обязательно такой) длины 5. Каждую букву можно использовать неограниченное кол-во раз или не использовать совсем. Сколько всего слов может составить Таня, если слово НЕ может начинаться с гласной и НЕ может заканчиваться согласной?

Показать ответ и решение

Решение аналитически:

Начнем со слов длины 5: на 1 место можно поставить 4 буквы (все согласные), на второе - 6, на третье - 6, на четвертое - 6, на пятое - 2 (все гласные).

Слова длины 4: на 1 место можно поставить 4 буквы (все согласные), на второе - 6, на третье - 6, на четвертое - 2 (все гласные).

Слова длины 3: на 1 место можно поставить 4 буквы (все согласные), на второе - 6, на третье - 2 (все гласные).

Слова длины 2: на 1 место можно поставить 4 буквы (все согласные), на второе - 2 (все гласные).

Меньше букв нельзя, так как мы не выполним условие никак.

Получаем ответ: 4*6*6*6*2 + 4*6*6*2 + 4*6*2 + 4*2 = 2072.

Решение программой с помощью циклов:

Напишем программу для перебора всевозможных 2-буквенных, 3-буквенных, 4-буквенных, 5-буквенных слов из заданных букв. Для этого организуем соответствующее количество вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.

a = "АБВГДЕ" # Наше слово
gl = "АЕ" # Гласные буквы слова
sogl = "БВГД" # Согласные буквы слова
count = set() # Множество подходящих слов
# Двухбуквенные слова
for x1 in sogl:
    for x2 in gl:
        s = x1 + x2 # Формируем слово и добавляем его в множество
        count.add(s)
# Трёхбуквенные слова
for x1 in sogl:
    for x2 in a:
        for x3 in gl:
            s = x1 + x2 + x3 # Формируем слово и добавляем его в множество
            count.add(s)
# Четырёхбуквенные слова
for x1 in sogl:
    for x2 in a:
        for x3 in a:
            for x4 in gl:
                s = x1 + x2 + x3 + x4 # Формируем слово и добавляем его в множество
                count.add(s)
# Пятибуквенные слова
for x1 in sogl:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in gl:
                    s = x1 + x2 + x3 + x4 + x5 # Формируем слово и добавляем его в множество
                    count.add(s)
print(len(count)) # Количество подходящих слов

Решение программой с помощью модуля itertools:

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.

from itertools import product
count = set() # Множество подходящих слов
for i in range(2,6): # С помощью product будем рассматривать слова различной длины
    for x in product("АБВГДЕ", repeat = i):
        s = "".join(x) # join объединит буквы
        if s[0] not in "АЕ" and s[-1] in "АЕ": # Проверка по условию
            count.add(s) # Добавляем слово в множество
print(len(count)) # Количество подходящих слов

Ответ: 2072

Ошибка.
Попробуйте повторить позже

Задача 60#25954Максимум баллов за задание: 1

Настя составляет 15  -буквенные слова, в которых есть буквы Н, А, С, Т, Я, причем на первом и последнем местах обязательно стоит гласная буква. Каждая из допустимых букв может встречаться в слове максимум три раза или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может составить Настя?

Показать ответ и решение

Так как всего 15  мест и каждая из 5  букв может встречаться по 3  раза, проиндексируем все буквы, то есть: Н1   , Н2   , Н3   , А1   , А2...  и т.д. Получается, теперь каждая может встречаться в слове по разу, так как изначальное буквы могли по 3  , а из каждой буквы мы сделали 3  индексированных. Значит, на 1  место можно поставить 6  букв (2  гласные), на последнее 5  букв (букву с 1  места нельзя использовать). Расставляем остальные буквы, будет: 6 ⋅ 13 ⋅ 12 ⋅ ...⋅ 3 ⋅ 2 ⋅ 1 ⋅ 5  . Это ответ на задачу, если бы буквы были проиндексированы, но теперь нам надо убрать перестановки Н1   , Н2   , Н3   и т.д. Значит, делим на 3 ⋅ 2 ⋅ 1  . Такое надо сделать для каждой из 5  букв, значи получается ответ: 24024000

Ответ: 24024000
Рулетка
Вы можете получить скидку в рулетке!