8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Ростислав составляет слова из букв своего имени РОСТИСЛАВ. Слово должно состоять из 6 букв, каждая буква может встречаться любое число раз и не встречаться вообще. Кроме того, в слове количество согласных букв должно быть больше, чем количество гласных. Сколько различных слов может составить Ростислав?
В нашем наборе 3 гласных и 5 согласных.
Проще будет считать слова именно по количеству гласных букв, так как можно будет рассмотреть меньше случаев.
1) Слова без гласных
Тут всё просто, считаем следующим образом — 5*5*5*5*5*5 = 15625
2) Слова с одной гласной
3*5*5*5*5*5 = 9375, умножаем на 6, тем самым рассматривая гласную на 6 позициях. Получаем 56250.
3) Слова с двумя гласными
Посчитаем перестановки гласных без повторов — 6*5/2! = 15
15 умножаем на 3*3*5*5*5*5, получаем 84375.
Итого, 15625+56250+84375 = 156250.
Решение через циклы
Составляем программу для перебора всех 6-буквенных слов из букв РОСТИЛАВ. Для каждой комбинации формируем
слово через сложение букв из вложенных циклов, затем считаем количество гласных с помощью метода . Если
их меньше трёх, увеличиваем ответ. В конце выводим значение счётчика, что и будет количеством всех слов,
удовлетворяющих условию.
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: w = a + b + c + d + e + f # формируем слово # Проверяем, что гласных меньше 3 if w.count("О") + w.count("И") + w.count("А") < 3: k += 1 # увеличиваем счётчик, если слово подходит print(k) # выводим ответ
Решение через itertools
Используем функцию для генерации всех 6-буквенных комбинаций из букв РОСТИСЛАВ. Каждую
комбинацию преобразуем в строку с помощью
, затем считаем количество гласных. Если их меньше трёх,
добавляем слово в множество, чтобы исключить дубликаты. В конце выводим длину множества, что и будет
количеством всех допустимых слов.
from itertools import product s = "РОСТИСЛАВ" # набор допустимых букв p = set() # множество для хранения допустимых слов for x in product(s, repeat=6): w = "".join(x) # преобразуем кортеж в строку if w.count("О") + w.count("И") + w.count("А") < 3: p.add(w) # добавляем слово в множество, если условие выполнено print(len(p)) # выводим ответ
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!