8.02 Подсчет количества слов/чисел
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Из букв Т, А, Н, Ц, О, Р составляются 8-буквенные последовательности. Сколько можно составить различных последовательностей, если известно, что в каждой из них на 5-ой позиции стоит буква Т или О, на 1-ой позиции не может стоять согласная буква, а на последнем месте стоит буква Н?
Решение аналитически:
Для второй, третьей, четвертой, шестой и седьмой позиций ограничений нет. Там могут стоять все шесть букв.
На пятом месте может стоять одна из двух букв, значит, варианта два.
На первом месте могут стоять только гласные буквы, их две.
На восьмом месте стоит только одна буква.
Всего последовательностей: 2*6*6*6*2*6*6*1=31104.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ТАНЦОР" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: for x6 in alf: for x7 in alf: for x8 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово if w[4] in "ТО" and w[0] in "ОА" and w[-1] == "Н": # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ТАНЦОР" # Алфавит к задаче # Получим все 8-буквенные слова из заданного алфавита for w in product(alf, repeat = 8): w = "".join(w) # join объединяет буквы if w[4] in "ТО" and w[0] in "ОА" and w[-1] == "Н": # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Из букв слова К, А, П, И, Б, А, Р, А, перестановками получают 8-буквенные последовательности. Сколько можно составить различных последовательностей таких, что они не содержат сочетание букв БР?
Решение аналитически:
Всего существует = 6720 последовательностей. Так как буква А в слове встречается три раза, то для
исключения повторений дробь делится на 3!.
Число последовательностей с сочетанием букв БР равно 7. Если последовательность включает в себя сочетание букв
БР, то для каждого варианта перестановки сочетания букв БР существует = 120
последовательностей.
Число последовательностей, содержащей сочетаний букв БР равно 7*120=840.
Тогда число последовательностей, не содержащих сочетание букв БР равно: 6720-840=5880.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "КАПИБР" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: for x6 in alf: for x7 in alf: for x8 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово # Всего уникальных букв 6 штук, а букв А - 3 штуки if "БР" not in w and len(set(w)) == 6 and w.count("А") == 3: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "КАПИБАРА" # Алфавит к задаче # Получим все 8-буквенные слова из заданного алфавита for w in permutations(alf, 8): w = "".join(w) # join объединяет буквы if "БР" not in w: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько различных семибуквенных кодовых слов можно составить из букв Т, У, Р, И, З, М если в каждом из них буква И встречается не менее 3 раз?
Решение аналитически:
Всего существует =279936 вариантов слов. Количество слов без буквы И равно
=78125. Найдём количество
слов с одной буквой И.
Для случая, когда буква И стоит на первом месте, есть 1*5*5*5*5*5*5=15625 вариантов кодов. Так как И может стоять на любом из семи мест, то всего кодов с одной буквой И равно: 15625*7=109375.
Найдём количество слов с двумя буквами И. Всего позиций 7, две из них отводится под букву И, а на оставшихся
пяти местах может находиться любая буква из набора: 1*1*5*5*5*5*5=3125. Число перестановок буквы И равно:
=21. Общее число слов с двумя буквами И: 3125*21=65625.
Так как нам нужно найти количество слов с тремя и более буквами И, то нам достаточно из всех вариантов вычесть слова без буквы И, слова с одной буквой И и слова с двумя буквами И:
279936-78125-109375-65625=26811 слов.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ТУРИЗМ" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: for x6 in alf: for x7 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 + x7 # Формируем слово if w.count("И") >= 3: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ТУРИЗМ" # Алфавит к задаче # Получим все 7-буквенные слова из заданного алфавита for w in product(alf, repeat = 7): w = "".join(w) # join объединяет буквы if w.count("И") >= 3: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Катя составляет 5-буквенные коды. В кодах разрешается использовать только буквы С,И,М,В,О,Л, при этом код не может начинаться с гласной буквы, а также не может содержать двух одинаковых букв подряд. Сколько различных кодов может составить Катя?
Решение аналитически:
На первое место можем разместить только согласную (одна из 4 букв). На следующую позицию можем поставить одну из 5 неиспользованных букв. Аналогичная тенденция продолжается и на следующие позиции, можно выбрать лишь 5 букв из неиспользованных.
Итого: вариантов.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "СИМВОЛ" # Алфавит к задаче 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 w[0] not in "ИО": # Проверка по условию f = 1 # Переменная-флаг for i in range(len(w) - 1): # Если хоть раз условие не выполнилось - флаг станет 0 if w[i] == w[i + 1]: # Если соседние буквы совпадают f = 0 break # Только если флаг остался единицей - считаем слово if f: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "СИМВОЛ" # Алфавит к задаче # Получим все 5-буквенные слова из заданного алфавита for w in product(alf, repeat = 5): w = "".join(w) # join объединяет буквы if w[0] not in "ИО": # Проверка по условию f = 1 for i in range(len(w) - 1): # Если хоть раз условие не выполнилось - флаг станет 0 if w[i] == w[i + 1]: # Если соседние буквы совпадают f = 0 break if f: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько различных шестибуквенных кодовых слов можно составить из букв С,У,П,Е,Р, если в каждом из них буква Е встречается не менее 2 раз?
Решение аналитически:
Для начала найдем общее количество шестибуквенных слов, которые можно составить из букв С, У, П, Е, Р:
.
Найдем количество шестибуквенных слов, которые можно составить из букв С, У, П, Е, Р, в которых нет буквы Е:
.
Найдем количество шестибуквенных слов, которые можно составить из букв С, У, П, Е, Р, в которых одна буква Е:
.
Количество слов, в которых буква Е встречается не менее двух раз: .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "СУПЕР" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: for x6 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 # Формируем слово if w.count("E") >= 2: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "СУПЕР" # Алфавит к задаче # Получим все 6-буквенные слова из заданного алфавита for w in product(alf, repeat = 6): w = "".join(w) # join объединяет буквы if w.count("E") >= 2: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Из букв слова АНСАМБЛЬ, составляются 8-буквенные последовательности. Сколько можно составить различных последовательностей таких, что каждая буква в них используется ровно один раз, они не содержат сочетание букв МС и не начинаются на мягкий знак?
Решение аналитически:
Из букв слова АНСАМБЛЬ нельзя составить ни одной последовательности длины 8, чтобы все буквы были различны, так как в слове АНСАМБЛЬ всего 8 букв и 2 из них повторяются. Поэтому, ответ 0.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "АНСМБЛЬ" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: for x6 in alf: for x7 in alf: for x8 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово if "МС" not in w and len(w) == len(set(w)) and w[0] != "Ь": # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = ’АНСМБЛЬ’ # Алфавит к задаче # Получим все 8-буквенные слова из заданного алфавита for w in permutations(alf, 8): w = ’’.join(w) # join объединяет буквы if "МС" not in w and w[0] != "Ь": # Проверка по условию (в слове нет МС и первая буква не Ь) ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
В качестве кодовых слов Егор использует 5-буквенные слова, в которых есть только буквы К,Р,У,Ж,Е,В,О, причём буква Е появляется ровно 2 раза. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем. Сколько различных кодовых слов может составить Егор?
Решение аналитически:
Для двух букв в слове, рассмотрим пример, пусть две буквы Е занимают первые две позиции, тогда на остальных трех позициях может стоять любая из 6-ти букв.
Е Е 6 6 6
Вторая буква Е может стоять на любой из 4 позиции, если первая стоит на первой. Если первая Е стоит на второй позиции, то у второй буквы Е всего 3 варианта, так как если поставить вторую букву Е на первую позицию, то получим дубликат.
Посчитав по аналогии число перестановок Е получаем, что всего слов, в которых буква Е встречается 2 раз:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
s = "КРУЖЕВО" # Алфавит к задаче k = 0 # Счётчик подходящих слов for a in s: for b in s: for c in s: for d in s: for e in s: w = a + b + c + d + e # Формируем слово if w.count("Е") == 2: # Проверка по условию k += 1 # Увеличим счётчик print(k) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 5-буквенные слова из заданного алфавита for x in product("КРУЖЕВО", repeat = 5): s = "".join(x) # join объединяет буквы if s.count("Е") == 2: # Проверка по условию count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Из букв С,У,М,К,А, составляются 8-буквенные последовательности. Сколько можно составить различных последовательностей, если известно, что в каждой из них на 3-й позиции стоит буква К или У, на 4-й позиции не может стоять гласная буква, на 7-ой только М, а на последнем месте стоит С или любая гласная буква? Отсчёт позиций начинается с 1.
Решение аналитически:
Гласные буквы нашего слова АУ. Согласные буквы нашего слова - СМК. На первое место мы можем поставить 5 букв. На второе также 5 букв. На третьей место мы можем поставить только буквы К или У - потому только 2 буквы можем поставить на это место. На четвёртом месте могут стоять только согласные буквы(в нашем слове 3 согласных буквы). На пятом и шестом месте может стоять по 5 букв. На 7 месте может стоять только одна буква - буква М. На последнем месте может стоять 3 букв( С и гласные буквы). Перемножив полученное, получим ответ: 11250
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
s = "СУМКА" # Алфавит к задаче k = 0 # Счётчик подходящих слов # Зададим цикл для каждой буквы в соответствии с условием задачи for a in s: for b in s: for c in "КУ": # Третья буква К или У for d in "СМК": # Четвёртая буква С, М или К for e in s: for f in s: for g in "М": # Седьмая буква М for h in "СУА": # Восьмая буква С, У или А w = a + b + c + d + e + f + g + h # Формируем слово k += 1 # Увеличим счётчик print(k) # Выведем нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 8-буквенные слова из заданного алфавита for x in product("СУМКА", repeat = 8): s = "".join(x) # join объединяет буквы if s[2] in "КУ" and s[3] not in "УА" and s[6] == "М" and s[-1] in "СУА": # Проверка по условию count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Крабоед составляет -буквенные слова из букв А, Р, М, И, Я, Ж, Д, Ё, Т. Каждую букву можно использовать любое
количество раз, либо не использовать совсем. При этом гласная и согласная буква не должны стоять рядом. Сколько слов
сможет составить Крабоед?
Решение аналитически:
Если согласная и гласная буква не должны стоять рядом, значит, наши слова могут выглядеть так: ГГГГГГГ и
ССССССС. Согласных букв , а гласных
, значит, общее количество слов будет равно
=
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
gl = "АИЯЁ" # Гласные буквы из заданного алфавита sogl = "РМЖДТ" # Согласные буквы из заданного алфавита count = set() # Множество подходящих слов for x1 in gl: for x2 in gl: for x3 in gl: for x4 in gl: for x5 in gl: for x6 in gl: for x7 in gl: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 # Составляем слово только из гласных букв count.add(s) # Добавим в множество for x1 in sogl: for x2 in sogl: for x3 in sogl: for x4 in sogl: for x5 in sogl: for x6 in sogl: for x7 in sogl: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 # Составляем слово только из согласных букв count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Cлова только из гласных букв for x in product("АИЯЁ",repeat = 7): s = "".join(x) # join объединяет буквы count.add(s) # Добавим в множество # Cлова только из согласных букв for x in product("РМЖДТ",repeat = 7): s = "".join(x) # join объединяет буквы count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Настя составляет 6-буквенные слова, в которых есть только буквы К, О, М, А, Р, причём буквы Р, О, К встречаются ровно по одному разу. Буква М встречается не более 2 раз, а буква А может встречаться любое количество раз или не встречаться вовсе. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько различных слов может составить Настя?
Решение аналитически:
Сначала расставим буквы К, О и Р по одному разу. Букву К можно поставить в любое место из 6, букву О – в
любое место из 5, букву Р - в любое место из 4. Итого вариантов. Осталось 3 места для
букв А и М. Для случая с двумя буквами М существует три варианта расстановки: ММА, МАМ, АММ.
Для случая с одной буквой М – также три варианта: МАА, ААМ и АМА. И еще один вариант, когда
букв М в слове нет. Итого
вариантов расстановки А и М. Получаем всего
вариантов.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "КОМАР" # Алфавит к задаче c = 0 # Счётчик подходящих слов for i in a: for j in a: for n in a: for k in a: for m in a: for p in a: s = i + j + n + k + m + p # Формируем слово # Проверка, что буквы Р,О,К встречаются ровно 1 раз и буква М не более 2 раз if s.count("Р") == 1 and s.count("О") == 1 and s.count("К") == 1 and s.count("М") <= 2: c += 1 # Увеличим счётчик print(c) # Выведем нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 6-буквенные слова из заданного алфавита for x in product("КОМАР", repeat = 6): s = "".join(x) # join объединяет буквы # Проверка, что буквы Р,О,К встречаются ровно 1 раз и буква М не более 2 раз if all(s.count(i) == 1 for i in "РОК") and s.count("М") <= 2: count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько существует чисел, восьмиричная запись которых содержит 8 цифр, причём все цифры различны и никакие две чётные и две нечётные цифры не стоят рядом?
Решение аналитически:
Восьмиричная система счисления содержит 8 цифр: 0,1,2,3,4,5,6,7. Четыре четных цифр и четыре нечетные цифры.
Рассмотрим два случая, когда число начинается с нечетной цифры и когда с четной:
1. Н Ч Н Ч Н Ч Н Ч, в таком случае (не забывая про то, что все цифры различны), получим
чисел.
2. Ч Н Ч Н Ч Н Ч Н, тут надо помнить, что на первом месте не может стоять 0, тогда
числа.
Итого: 576+432 = 1008 чисел.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной
строки, формируя все возможные комбинации. Запишем количество подходящих слов, чередуя нужные
буквы.
chet = "0246" # Чётные цифры nechet = "1357" # Нечётные цифры count = set() # Множество подходящих слов # Составляем слово вида ЧНЧНЧНЧН, где Ч - чётная цифра, Н - нечётная цифра for x1 in "246": # Число не может начинаться с 0 for x2 in nechet: for x3 in chet: for x4 in nechet: for x5 in chet: for x6 in nechet: for x7 in chet: for x8 in nechet: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово if len(set(s)) == len(s): # Проверка, что все цифры различные count.add(s) # Добавим в множество # Cоставляем слово вида НЧНЧНЧНЧ, где Ч - чётная цифра, Н - нечётная цифра for x1 in nechet: for x2 in chet: for x3 in nechet: for x4 in chet: for x5 in nechet: for x6 in chet: for x7 in nechet: for x8 in chet: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Формируем слово if len(set(s)) == len(s): # Проверка, что все цифры различные count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations count = set() # Множество подходящих слов for x in permutations("01234567"): s = "".join(x) # join объединяет буквы # Проверка, что число не начинается с 0 и при этом две чётных или нечётных цифры не стоят рядом if s[0] != "0" and all(int(s[i]) % 2 != int(s[i+1]) % 2 for i in range(len(s)-1)): # Проверка, что в слове чередуются чётные и нечётные буквы count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько различных семибуквенных кодовых слов можно составить из букв К,О,Т,Е,Л, если в каждом из них буква Т встречается не менее 3 раз?
Решение аналитически:
Всего существует вариантов кодовых слов.
1. Найдем количество слов без буквы Т, в таком случае у нас есть набор из четырех букв на семь мест
.
2. Найдем количество слов с одной буквой Т:
Т * * * * * * на месте * может быть любая буква из набора К,О,Е,Л:
Т 4 4 4 4 4 4
варианта
для случая, когда буква Т стоит на первом месте. Она может стоять на любом из семи мест, следовательно,
=
28672 слова с одной буквой Т.
3. Найдем количество слов с двумя буквами Т:
Т Т * * * * * на месте * может быть любая буква из набора К,О,Е,Л: Т Т 4 4 4 4 4
вариантов слов, когда буква Т стоит на первой и второй позиции. Теперь нужно найти
количество перестановок двух букв Т, это считается по формуле:
перестановка, где 7 - это сколькими
способами мы можем выбрать место для первой буквы Т, 6 - сколькими способами мы можем выбрать место для
второй буквы Т(6, так как одно место уже занято), поэтому всего вариантов
, но так как буквы
одинаковые, то нужно поделить еще на 2!, чтобы исключить повторение. Тогда общее количество слов:
.
Так как нам нужно найти количество слов с тремя и более буквами Т, то нам достаточно из всех вариантов вычесть слова без буквы Т, слова с одной буквой Т и слова с двумя буквами Т:
слов.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
s = "КОТЕЛ" # Алфавит к задаче k = 0 # Счётчик подходящих слов for a in s: for b in s: for c in s: for d in s: for e in s: for f in s: for g in s: w = a + b + c + d + e + f + g # Формируем слово if w.count("Т") >= 3: # Проверка по условию k += 1 # Увеличим счётчик print(k) # Выведем нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 7-буквенные слова из заданного алфавита for x in product("КОТЕЛ", repeat = 7): s = "".join(x) # join объединяет буквы if s.count("Т") >= 3: # Проверка по условию count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Арина составляет 6-буквенные коды из букв Ш,У,Т,К,А. Буква У может использоваться в коде ровно один раз, при этом она не может стоять на первом месте, и рядом с буквой А. Все остальные буквы могут встречаться любое количество раз. Сколько различных кодов может составить Арина?
Решение аналитически:
Найдем слова с одной буквой У; есть четыре варианта расстановки, так как эта буква не может стоять на первом и последнем месте:
* У * * * * — так как У не может стоять на первом месте
* * У * * *
* * * У * *
* * * * У *
* * * * * У
Так как рядом с У не может стоять буква А, то слева и справа от У можно поставить только одну из трех букв, исключая А, а на другие оставшиеся места - одну из четырех.
3 У 3 4 4 4
4 3 У 3 4 4
4 4 3 У 3 4
4 4 4 3 У 3
4 4 4 4 3 У
Итого: .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "ШУТКА" # Алфавит к задаче count = set() # Множество подходящих слов for x1 in "ШТКА": # Первая буква не У 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.count("У") == 1 and "УА" not in s and "АУ" not in s: # Проверка по условию (одна У, слово не содержит УА и АУ) count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 6-буквенные слова из заданного алфавита for x in product("ШУТКА", repeat = 6): s = "".join(x) # join объединяет буквы # Проверка по условию (одна У, слово не содержит УА и АУ, первая буква не У) if s[0] != "У" and s.count("У") == 1 and "УА" not in s and "АУ" not in s: count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Из букв слова А,Р,Г,У,М,Е,Н,Т составляются 8-буквенные последовательности. Сколько можно составить различных последовательностей таких, что каждая буква в них используется ровно один раз, они содержат сочетание букв ЕН и не начинаются с согласной буквы?
Решение аналитически:
Найдем количество последовательнотсей с сочетанием букв ЕН, при этом не забывая ограничения на согласные буквы:
1. Е Н * * * * * * = слов.
2. * Е Н * * * * * = слов (так как на первом месте могут стоять только две гласные: А и
У)
3. * * Е Н * * * * = слов.
4. * * * Е Н * * * = слов.
5. * * * * Е Н * * = слов.
6. * * * * * Е Н * = слов.
7. * * * * * * Е Н = слов.
Тогда существует последовательностей.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "АРГУМЕНТ" # Алфавит к задаче count = set() # Множество подходящих слов for x1 in "УЕА": # Первая буква У, Е или А 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 "ЕН" in s and len(set(s)) == len(s): # Проверка по условию (в слове есть ЕН и все буквы различны) count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations count = set() # Множество подходящих слов # Получим все 8-буквенные слова из заданного алфавита for x in permutations("АРГУМЕНТ"): s = "".join(x) # join объединяет буквы if s[0] in "УЕА" and "ЕН" in s: # Проверка по условию (в слове есть ЕН и первая буква У, Е или А) count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Артём составляет 5-буквенные слова из букв О, П, Е, Р, А. Каждая буква может встречаться ровно один раз. При этом в слове не могут стоять рядом две согласные буквы, а буква П не может стоять на первом или последнем месте. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Артём?
Решение аналитически:
Рассмотрим все варианты того, как могут распологаться гласные и согласные:
СГСГГ – на первом месте может стоять только одна согласная, тогда всего вариантов
СГГСГ - на первом месте может стоять только одна согласная, тогда всего вариантов
СГГГС – такой вариант не возможен, так как в таком случае П обязана стоять или на первом или на последнем месте
ГСГСГ - всего вариантов
ГСГГС - на последнем месте может стоять только одна согласная, тогда всего вариантов
ГГСГС - на последнем месте может стоять только одна согласная, тогда всего вариантов
Просуммируем полученные значения . Тогда всего слов подходящих под условие
– 36.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "ОПЕРА" # Алфавит к задаче a1 = "ОЕРА" # Алфавит для первой буквы count = 0 # Счётчик подходящих слов for x1 in a1: for x2 in a: for x3 in a: for x4 in a: for x5 in a1: s = x1 + x2 + x3 + x4 + x5 # Формируем слово if len(set(s)) == 5 and ("РП" not in s) and ("ПР" not 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] != "П" and ("РП" not in s) and ("ПР" not in s): # Если в слове нет РП и ПР, первая и последняя буква не П count += 1 # Увеличим счётчик print(count) # Выведем нужное количество
Ошибка.
Попробуйте повторить позже
Кристина составляет 6-буквенные слова, она может использовать все буквы из слова «ВЪЕЗД». При этом каждая буква может встречаться любое количество раз либо не встречаться вовсе. Твердый знак может стоять только после согласной буквы (причём два твёрдых знака стоять рядом не могут). Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Кристина?
Решение аналитически:
Сначала найдем слова в которых твердого знака нет совсем: .
Теперь найдем все слова, в которых твердый знак встречается 1 раз, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парой (* обозначает любую букву кроме Ъ):
Эта пара может распологаться в слове в 5 местах: с 1 позиции, со 2, с 3, с 4 и с 5. Следовательно таких слов
.
Теперь найдем все слова в которых твердый знак встречается дважды, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парами (* обозначает любую букву кроме Ъ):
В таком случае существует всего 6 различных вариантов перестановок пар (первый вариант указан выше):
Следовательно таких слов .
Теперь найдем все слова в которых твердый знак встречается трижды, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парами:
Следовательно таких слов .
Большее число раз твердый знак встречаться не может. Тогда найдем сумму всех значений:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "ВЪЕЗД" # Алфавит к задаче count = set() # Множество подходящих слов for x1 in "ВЕЗД": # Твердый знак не может стоять на первом месте 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 "Ъ" in s: # Проверка всех сочетаний букв по условию if ("ВЪ" in s or "ЗЪ" in s or "ДЪ" in s) and "ЕЪ" not in s and "ЪЪ" not in s: count.add(s) else: # Если нет Ъ, значит и сочетания с ним проверять не надо count.add(s) print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 6-буквенные слова из заданного алфавита for x in product("ВЪЕЗД", repeat = 6): s = "".join(x) # join объединяет буквы if "Ъ" in s and s[0] != "Ъ": # Если в слове Ъ стоит не на первом месте if ("ВЪ" in s or "ЗЪ" in s or "ДЪ" in s) and "ЕЪ" not in s and "ЪЪ" not in s: # Проверка по условию count.add(s) # Добавим в множество elif "Ъ" not in s: # Если нет Ъ, значит и сочетания с ним проверять не надо count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Илья составляет слова перестановкой букв в слове ФЕХТОВАЛЬЩИК. Сколько слов, в середине которых находится слово ФЕТА, а в начале стоит гласная буква, может составить Илья?
Решение аналитически:
Так как слово ФЕТА стоит посередине и буквы в слове ФЕХТОВАЛЬЩИК не повторяются, то количество доступных слов равно 8, из них 2 буквы гласные, остальные 6 согласные. Так как все слова начинаются с гласной, то всего вариантов слов равно:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "ХОВЛЬЩИК" # Алфавит к задаче # Уберем из слова ФЕТА, будем считать, по умолчанию, что это сочетание букв находится в середине слова. Тогда остаётся только проверить, что слово начинается с гласной count = set() # Множество подходящих слов for x1 in "ОИ": 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 len(set(s)) == len(s): # Проверка, что все буквы различны count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations count = set() # Множество подходящих слов # Уберем из слова ФЕТА, будем считать, по умолчанию, что это сочетание букв находится в середине слова. Тогда остаётся только проверить, что слово начинается с гласной for x in permutations("ХОВЛЬЩИК"): s = "".join(x) # join объединяет буквы if s[0] in "ОИ": # Проверка по условию count.add(x) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Определите количество шестизначных чисел, записанных в пятеричной системе счисления, учитывая, что числа не могут начинаться с цифр 1 и 2 и не должны содержать сочетания цифр 103 и 3304 одновременно.
Решение аналитически:
Найдем все шестизначные числа, которые не начинаются с 1 и 2 (так же помним что числа не могут начинаться с
0): .
Заметим что число в котором встречается сочетания цифр 103 и 3304 одновременно всего одно - 103304, но оно начинается с 1, поэтому оно уже не вошло в комбинации. Следовательно ответ 6250.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных сочетаний из заданных цифр. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает цифры заданной строки,
формируя все возможные комбинации. Запишем количество подходящих комбинаций.
a = "01234" count = set() for x1 in "34": 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 # В списке хранится True или False, находится ли определенная подстрока в s или нет # Если сумма списка равна 2, то в списке два True - такое число нам не подходит # Так как две комбинации в числе находятся одновременно # True - 1, False - 0 m = sum(["103" in s, "3304" in s]) if m < 2: count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные комбинации из заданных цифр. Запишем количество подходящих комбинаций.
from itertools import product count = set() # Множество подходящих слов # Получим все 6-буквенные слова из заданного алфавита for x in product("01234", repeat = 6): s = "".join(x) # join объединяет буквы if s[0] not in "012": # Проверка по условию # В списке хранится True или False, находится ли определенная подстрока в s или нет # Если сумма списка равна 2, то в списке два True - такое число нам не подходит # Так как две комбинации в числе находятся одновременно m = sum(["103" in s, "3304" in s]) if m < 2: count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
На Марсе нашли разумную жизнь. Пришельцы умеют читать и писать. Ученые выяснили, что в алфавите марсиан всего 7 букв, 4 из них согласные. Сколько может быть 4-х буквенных слов на Марсе, которые начинаются с согласной и при этом все буквы в слове различные.
Решение аналитически:
На первое место мы можем поставить одну из 4 согласных букв. Поскольку одну букву мы поставили на первое место, то на второе - можем поставить 6 букв. На третье - 5 и на четвёртое - 4 буквы. Перемножив, получим ответ: 480
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
s = "АИОБВГД" # Алфавит к задаче s1 = "БВГД" # Согласные к задаче k = 0 # Счётчик подходящих слов for a in s1: for b in s: for c in s: for d in s: w = a + b + c + d # Формируем слово if all(w.count(i) == 1 for i in w): # Проверка, что все буквы различны k += 1 # Увеличим счётчик print(k) # Выведем нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations count = set() # Множество подходящих слов # Получим все 4-буквенные слова из заданного алфавита for x in permutations("АБВГДЕИ", r = 4): s = "".join(x) # join объединяет буквы if s[0] in "БВГД": # Проверка по условию count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Максим Сергеевич составляет 6-буквенные слова, в которых есть только буквы К, О, Т, П, Е, С. В этих словах гласные не могут стоять рядом с гласными, а согласные с согласными. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые Максим Сергеевич может написать?
Решение аналитически:
В нашем слове 4 согласных буквы и 2 гласных буквы. Есть два варианта расстановки букв в слове, при котором
будет выполняться условие с чередованием: СГСГСГ и ГСГСГС, где Г - гласная буква и С - согласная буква. В первом
случае, на места с согласными буквами мы можем расположить по одной из 4 букв в каждое место. На места с
гласными буквами мы можем поставить по одной из 2 букв на каждое место. Получается, что количество слов в
первом варианте равно: . Во втором случае, количество вариантов будет таким же.
Остается полученное количество вариантов в первом случае умножить на количество случаев. Ответ:
1024.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
s1 = "КТПС" # Согласные буквы в слове s2 = "ОЕ" # Гласные буквы в слове k = 0 # Счётчик подходящих слов # Чередуем порядок согласных и гласных for a in s1: for b in s2: for c in s1: for d in s2: for e in s1: for f in s2: w = a + b + c + d + e + f # Формируем слово k += 1 # Увеличим счётчик # Чередуем порядок гласных и согласных for a in s2: for b in s1: for c in s2: for d in s1: for e in s2: for f in s1: w = a + b + c + d + e + f # Формируем слово k += 1 # Увеличим счётчик print(k) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов gl = "ОЕ" # Гласные буквы # Получим все 6-буквенные слова из заданного алфавита for x in product("КОТПЕС", repeat = 6): s = "".join(x) # join объединяет буквы if all((s[i] in gl) != (s[i+1] in gl) for i in range(len(s)-1)): # Проверка, что нет рядом стоящих гласных и согласных букв count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину