8.02 Подсчет количества слов/чисел
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Катя составляла -буквенные слова из букв Н, А, П, И, Т, О, К. Каждая из букв может встречаться в
слове ровно один раз, причём последней буквой должна быть П. Сколько различных слов может составить
Катя?
Решение аналитически:
На последнее место ставим букву П, значит, на места с 1 по 6 остается: 6 * 5 * 4 * 3 * 2 * 1 = 720 вариантов.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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 len(w) == len(set(w)) and x7 == "П": # Проверка по условию ans.add(w) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() alf = "НАПИТОК" # Получим все 7-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова for x in permutations(alf, 7): if x[-1] == "П": # Проверка по условию ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Ошибка.
Попробуйте повторить позже
Лиза составляет 5-буквенные слова из букв Ц, И, Ф, Р, А. Каждая из букв может встречаться в слове сколько угодно раз или не встречаться совсем, причём слово не может начинаться с гласной. Сколько различных слов может составить Лиза?
Решение аналитически:
На первое место мы можем поставить любую согласную букву, их 3 штуки. На остальные места мы можем поставить любую букву из всех 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: if x1 not in "ИА": # Проверка по условию w = x1 + x2 + x3 + x4 + x5 # Формируем слово ans.add(w) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ЦИФРА" # Алфавит к задаче # Получим все 5-буквенные слова for x in product(alf, repeat = 5): if x[0] not in "ИА": # Проверка по условию ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Ошибка.
Попробуйте повторить позже
Гоша составляет слова длины . Он использует буквы Г, О, Ш, А, причём каждая буква может быть использована любое
количество раз. Найдите, сколько различных слов может составить Гоша, и запишите в ответ степень, в которую нужно
возвести
, чтобы получить искомый ответ.
Решение аналитически:
Так как любая буква может быть использована любое количество раз, а ограничений никаких нет, то на любой
из семи позиций может стоять любая из 4 букв, тогда у Гоши есть возможность составить слов.
Получим ответ:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
from math import log2 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 # Формируем слово ans.add(w) # Добавляем слово в множество print(int(log2(len(ans)))) # Выводим нужное количество (степень)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from math import log2 from itertools import product ans = set() # Множество подходящих слов alf = "ГОША" # Алфавит к задаче # Получим все 6-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова for x in product(alf, repeat = 6): ans.add(x) # Добавляем слово в множество print(int(log2(len(ans)))) # Выводим нужное количество (степень)
Ошибка.
Попробуйте повторить позже
Лёша составляет слова(не обязательно осмысленные) из букв С, О, Т, К, А максимальной длины 5 и минимальной длины 3. Каждую букву можно использовать только один раз или не использовать совсем. Выписав все слова, Лёша позвал Руслана чтобы похвастаться. Узнав об этом, Руслан незамедлительно стёр треть всех слов, а потом половину от оставшихся. Сколько всего слов осталось после действий Руслана?
Решение аналитически:
Сначала посчитаем сколько слов составил Лёша:
для слов длины 3: 5 * 4 * 3
для слов длины 4: 5 * 4 * 3 * 2
для слов длины 5: 5 * 4 * 3 * 2 * 1
Получается: 5*4*3 + 5*4*3*2 + 5*4*3*2*1 = 300.
Руслан стёр и получилось: (300 - 300/3)*(1/2) = 100.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 3-буквенных, 4-буквенных, 5-буквенных слов из заданных букв. Для этого организуем соответствующее количество вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "СОТКА" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: w = x1 + x2 + x3 # Формируем слово (3 буквы) if len(w) == len(set(w)): # Все буквы различны ans.add(w) for x4 in alf: w = x1 + x2 + x3 + x4 # Формируем слово (4 буквы) if len(w) == len(set(w)): # Все буквы различны ans.add(w) for x5 in alf: w = x1 + x2 + x3 + x4 + x5 # Формируем слово (5 букв) if len(w) == len(set(w)): # Все буквы различны ans.add(w) # Умножение на 2/3 а потом на 1/2 даёт умножение на 1/3, значит нужно разделить полученное количество на 3 print(len(ans) // 3)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "СОТКА" # Алфавит к задаче # Получим все 3-буквенные, 4-буквенные, 5-буквенные слова # Перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова # Для получения слов нужной длины используем срезы for x in permutations(alf, 5): ans.add(x[:3]) # Добавляем слово в множество (3 буквы) ans.add(x[:4]) # Добавляем слово в множество (4 буквы) ans.add(x) # Добавляем слово в множество (5 букв) # Умножение на 2/3 а потом на 1/2 даёт умножение на 1/3, значит нужно разделить полученное количество на 3 print(len(ans) // 3)
Ошибка.
Попробуйте повторить позже
Сколько -буквенных слов можно составить из букв К, О, М, П, Ь, Ю, Т, Е, Р? Буквы Ю и Т должны быть использованы
по два раза. Остальные буквы можно использовать сколько угодно раз.
Решение аналитически:
Для начала воспользуемся формулой сочетаний: .
При помощи неё найдём количество вариантов расставить 2 буквы Ю на 7 мест:
А также количество вариантов расставить 2 буквы Т на оставшиеся 5 мест:
На оставшиеся 3 места можно расставить любую букву кроме Ю и Т, поэтому итоговая формула выглядит вот так:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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("Ю") == w.count("Т") == 2: # Проверка по условию ans.add(w) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "КОМПЬЮТЕР" # Алфавит к задаче # Получим все 7-буквенные слова for x in product(alf, repeat = 7): if x.count("Ю") == x.count("Т") == 2: # Проверка по условию ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Ошибка.
Попробуйте повторить позже
Азат составляет 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 len(w) == len(set(w)): # Если все буквы различные # Проверка по условию (первая буква Е или О и последняя буква Д или М или Н) или первая буква Д или М или Н if (x1 in "ЕО" and x5 in "ДМН") or x1 in "ДМН": ans.add(w) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "ДЕМОН" # Алфавит к задаче # Получим все 5-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова for x in permutations(alf, 5): # Проверка по условию (первая буква Е или О и последняя буква Д или М или Н) или первая буква Д или М или Н if (x[0] in "ЕО" and x[-1] in "ДМН") or x[0] in "ДМН": ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Ошибка.
Попробуйте повторить позже
АНАСТАСИЯ из букв своего имени составляет слова перестановкой исходных букв. Сколько различных слов может составить АНАСТАСИЯ, если первая буква не может быть согласной?
Решение аналитически:
На первое место можем поставить только одну из 5 гласных букв, на второе - одну из 8 оставшихся букв, на третье - одну из 7 оставшихся и так далее.
Также результат нужно поделить на 2, так как в слове две буквы С, и на 3, так как в слове три буквы А.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 9-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
s = "АНТСИЯ" # Алфавит к задаче count = 0 # Счётчик подходящих слов for x1 in s: for x2 in s: for x3 in s: for x4 in s: for x5 in s: for x6 in s: for x7 in s: for x8 in s: for x9 in s: f = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 # Формируем слово # Проверим количество каждой буквы a = f.count("А") == 3 n = f.count("Н") == 1 c = f.count("С") == 2 t = f.count("Т") == 1 i = f.count("И") == 1 y = f.count("Я") == 1 if a and n and c and t and t and i and y and f[0] not in "НСТ": # Если соблюдены все условия count += 1 # Увеличим счётчик print(count)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "АНАСТАСИЯ" # Алфавит к задаче # Получим все 9-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова for x in permutations(alf, 9): if x[0] not in "НСТ": # Если соблюдены все условия ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Ошибка.
Попробуйте повторить позже
Сколько слов можно составить из букв К, Е, Г, Э, если каждое слово состоит из пяти букв, на первом месте стоит Э и каждая буква используется любое количество раз?
Решение аналитически:
Чтобы решить эту проблему, мы можем использовать следующие шаги:
Шаг : Поскольку Э стоит на первом месте, нам нужно рассмотреть только оставшиеся
позиции.
Шаг : Есть
буквы на выбор для каждой из оставшихся
позиций, так как каждая буква может быть
использована любое количество раз. Итак, у нас есть
варианта для каждой из оставшихся
позиций.
Шаг : Используя принцип умножения при подсчете, мы можем умножить количество вариантов вместе, чтобы
получить общее количество слов, которые могут быть составлены:
Таким образом, существует слов, которые могут состоять из букв К, Е, Г, Э, если каждое слово состоит из пяти
букв, то E стоит первой, и каждая буква используется любое количество раз.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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] == "Э": # Если первая буква Э ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "КЕГЭ" # Алфавит к задаче # Получим все 5-буквенные слова из заданного алфавита for w in product(alf, repeat = 5): if w[0] == "Э": # Если первая буква Э ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько слов можно составить из букв С, Т, О, Л, если каждое слово состоит из четырёх букв и в каждом слове есть по крайней мере одна буква О?
Решение аналитически:
Подходящие четырёхбуквенные слова неподходящие четырёхбуквенные слова
все четырёхбуквенные
слова.
Из букв С, Т, О, Л возможно составить четырёхбуквенных слов, так как на каждой позиции может
стоять одна из четырёх букв.
Не подходят те четырёхбуквенные слова, в которых нет букв О. Их количество равно , так как на
каждой позиции может стоять одна из букв С, Т, Л.
Подходящие четырёхбуквенные все четырёхбуквенные слова
неподходящие четырёхбуквенные слова
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "СТОЛ" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: w = x1 + x2 + x3 + x4 # Формируем слово if "О" in w: # Если буква О есть в слове ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "СТОЛ" # Алфавит к задаче # Получим все 4-буквенные слова из заданного алфавита for w in product(alf, repeat = 4): if "О" in w: # Если буква О есть в слове ans.add(w) # Добавим в множество print(len(ans))
Ошибка.
Попробуйте повторить позже
Сколько слов можно составить из букв слова ’ХИНКАЛИ’, если каждое слово состоит из пяти букв, при этом каждая буква встречается не более 1 раза, а буквы Л и Х не стоят рядом?
Примечание: буквы И считаются одинаковыми.
Всего пятибуквенных слов можно составить , так как уникальных букв для составления у нас 6.
Из них нужно вычесть количество сочетаний, в которых присутствуют буквы ХЛ рядом. Комбинаций из этих букв всего
2: ХЛ и ЛХ, всего существует 4 варианта разместить две буквы рядом в слове из 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 len(w) == len(set(w)) and "ЛХ" not in w and "ХЛ" not in w: # Все буквы различны и в слове нет сочетаний ЛХ и ХЛ ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "ХИНКАЛ" # Алфавит к задаче # Получим все 5-буквенные слова из заданного алфавита for w in permutations(alf, 5): w = "".join(w) # join объединяет буквы if ("ЛХ" not in w) and ("ХЛ" not in w): # Если в слове нет сочетаний ЛХ и ХЛ ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Петя составляет слова, состоящие из 6 букв, из символов С, О, Н. В каждом слове есть хотя бы две буквы Н и нет сочетания НС. Каждая буква может встречаться любое количество раз. Сколько слов может составить Петя?
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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("Н") >= 2 and "НС" not in w: # Если в слове нет НС и количество Н больше или равно 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("Н") >= 2 and "НС" not in w: # Если в слове нет НС и количество Н больше или равно 2 ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько слов из шести символов может составить Петя перестановкой букв слова БАОБАБ?
Решение аналитически:
Недостаточно просто посчитать количество шестибуквенных последовательностей из букв слова БАОБАБ, потому что есть одинаковые буквы, из-за чего некоторые слова будут посчитаны несколько раз.
Решение программой: в массив сохраняем только уникальные слова (аналог множества), после чего находим длину массива.
Решение математикой: три буквы Б дадут 3! повторений, две буквы А дадут 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("Б") == 3 and w.count("А") == 2 and w.count("О") == 1: # Если 3 буквы Б, две буквы А, одна буква О ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "БАОБАБ" # Алфавит к задаче # Получим все 6-буквенные слова из заданного алфавита for w in permutations(alf, 6): # Получим все 6-буквенные слова из заданного алфавита w = "".join(w) # join объединит буквы ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Петя составляет четырехбуквенные слова из букв слова ПРОКРАСТИНАЦИЯ, при этом буква в полученном слове не должна встречаться больше раз, чем она встречается в исходном слове. Сколько слов он может составить, если они должны состоять из 4 букв, начинаться и оканчиваться гласной буквой, содержать сочетание АР и не содержать сочетание АС?
Примечание: следует считать, что повторяющиеся буквы ничем друг от друга не отличаются.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов word = "ПРОКРАСТИНАЦИЯ" # Алфавит к задаче # Убираем повторяющиеся буквы для корректного перебора alf = set("ПРОКРАСТИНАЦИЯ") for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: w = x1 + x2 + x3 + x4 # Формируем слово f = 1 # Переменная-флаг for i in w: if not (w.count(i) <= word.count(i)): # Если количество определенных букв в нашем слове больше, чем в изначальном # Если нашли несоответствие - делаем флаг равным 0 f = 0 break # Только если флаг остался единицей и соблюдены остальные условия if f and w[0] in "ОАИЯ" and w[-1] in "ОАИЯ" and "АР" in w and "АС" not in w: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов word = "ПРОКРАСТИНАЦИЯ" # Алфавит к задаче # Убираем повторяющиеся буквы для корректного перебора alf = set("ПРОКРАСТИНАЦИЯ") # Получим все 4-буквенные слова из заданного алфавита for w in product(alf, repeat = 4): w = "".join(w) # join объединяет буквы f = 1 # Переменная-флаг for i in w: if not (w.count(i) <= word.count(i)): # Если количество определенных букв в нашем слове больше, чем в изначальном # Если нашли несоответствие - делаем флаг равным 0 f = 0 break # Только если флаг остался единицей и соблюдены остальные условия if f and w[0] in "ОАИЯ" and w[-1] in "ОАИЯ" and "АР" in w and "АС" not in w: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Петя составляет шестибуквенные слова из символов Щ, Е, Л, Ч, О, К. В каждом слове хотя бы одна буква О и ровно на трёх позициях стоят согласные. Каждая буква может использоваться любое количество раз. Сколько слов может составить Петя?
Решение аналитически:
Слово состоит из 6 букв, из которых ровно 3 должны быть согласными, а остальные 3 — гласными. Количество способов
выбрать 3 позиции из 6 для согласных: .
Для согласных позиций (3 позиции): каждая из 3 позиций может быть любой из 4 согласных (Щ, Л, Ч, К). Количество
вариантов: .
Для гласных позиций (3 позиции): каждая из 3 позиций может быть любой из 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 "О" in w and (w.count("О") + w.count("Е")) == 3: # Если в слове есть О и суммарное количество О, Е равно 3 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 "О" in w and (w.count("О") + w.count("Е")) == 3: # Если в слове есть О и суммарное количество О, Е равно 3 ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько 8-буквенных слов может составить Петя из букв П, Е, Т, Я, если буква П должна использоваться менее трёх раз и при этом должна стоять рядом с Е и не может быть на последней позиции? Каждая буква может использоваться несколько раз или не использоваться совсем.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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.count("П") < 3 and w[-1] != "П": # Если меньше трёх П и последняя буква не П f = 1 # Переменная-флаг # Добавляем буферный символ в начало, чтобы w1[i - 1] отрабатывало корректно # Для первого символа w1 = "_" + w for i in range(1, len(w1) - 1): if w1[i] == "П" and w1[i - 1] != "Е" and w1[i + 1] != "Е": # Рядом с П не стоит Е f = 0 break # Только если флаг остался 1 if f: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ПЕТЯ" # Алфавит к задаче for w in product(alf, repeat = 8): w = "".join(w) # Объединим буквы if w.count("П") < 3 and w[-1] != "П": # Если меньше трёх П и последняя буква не П f = 1 # Переменная-флаг # Добавляем буферный символ в начало, чтобы w1[i - 1] отрабатывало корректно # Для первого символа w1 = "_" + w for i in range(1, len(w1) - 1): if w1[i] == "П" and w1[i - 1] != "Е" and w1[i + 1] != "Е": # Рядом с П не стоит Е f = 0 break # Только если флаг остался 1 if f: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Определите количество пятизначных чисел, записанных в девятеричной системе счисления, в записи которых цифра
встречается не более одного раза, на первом месте не может стоять нечетная цифра, а на последнем не могут стоять цифры
и
.
Решение аналитически:
Алфавит —
Нечетные — , четные —
На первом месте в пятибуквенном слове могут стоять только четные числа их всего штук, но число не может
начинаться с
, следовательно, нам доступно только 4 числа.
На последнем месте могут использоваться все числа кроме и
.
Цифра может встречаться не более одного раза. Найдем сначала числа без
, а потом с
Без : получаем
варианта на первом месте,
вариантов на
-ом,
-ем и
-ом месте и
вариантов на
-ом
месте.
С :
Случай, когда на
-ом месте: получаем
варианта на первом месте,
вариант на втором месте (сама
-ка),
вариантов на
-ем и
-ом месте и
вариантов на
-ом месте. Так как
-ое,
-ье и
-ое место ничем не отличаются,
мы можем смело умножить результат для данного случая на
(тройка может быть на любом из трех
мест).
Случай, когда на
-ом месте: получаем
варианта на первом месте,
вариантов на
-ом,
-ем и
-ом месте и
вариант (сама
-ка) на
-ом месте.
Ответ:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает цифры заданной строки, формируя
все возможные комбинации. Запишем количество подходящих комбинаций.
ans = set() # Множество подходящих слов alf = "012345678" # Алфавит к задаче 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 "01357" and w[-1] not in "18" and w.count("3") <= 1: # Проверка по условию ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "012345678" # Алфавит к задаче # Получим все комбинации из 5 цифр for w in product(alf, repeat = 5): w = "".join(w) if w[0] not in "01357" and w[-1] not in "18" and w.count("3") <= 1: ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Дано букв:
. Сколько двухбуквенных слов можно из них составить? Каждую букву можно использовать
неограниченное число раз.
Решение аналитически:
Возьмем букву на первой позиции. На второй позиции мы можем взять все
букв.
Далее возьмем букву на первой позиции. На второй позиции мы можем взять все
букв.
Далее...
Значит, для каждой буквы на первой позиции (их всего ) будет идти вторая любая буква (их тоже
).
Значит, ответ равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 2-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ABCDE" # Алфавит к задаче for x1 in alf: for x2 in alf: w = x1 + x2 # Формируем слово ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ABCDE" # Алфавит к задаче # Получим все 2-буквенные слова из заданного алфавита for x in product(alf, repeat = 2): ans.add(x) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Дано букв:
. Сколько четырёхбуквенных слов можно из них составить? Каждую букву можно
использовать неограниченное число раз.
Решение аналитически:
Возьмем букву на первой позиции. На второй позиции мы можем взять все
букв, на третьей — тоже
, на
четвёртой —
.
Далее возьмем букву на первой позиции. На второй позиции мы можем взять все
букв, на третьей — тоже
, на
четвёртой —
.
Далее...
И повторяем так раз.
Значит, для каждой буквы на первой позиции (их всего ) будет идти вторая любая буква (их тоже
), третьей
буквой так же будет идти любая из
, четвёртой — любая из
.
Значит, ответ равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ABCDE" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: w = x1 + x2 + x3 + x4 # Формируем слово ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product ans = set() # Множество подходящих слов alf = "ABCDE" # Алфавит к задаче # Получим все 4-буквенные слова из заданного алфавита for w in product(alf, repeat = 4): w = "".join(w) # Объединим буквы ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Дано букв:
. Сколько пятибуквенных слов можно из них составить? Каждую букву можно использовать
неограниченное число раз.
Решение аналитически:
Возьмем букву на первой позиции. На второй позиции мы можем взять все
букв, на третьей — тоже
, на
четвёртой —
, на пятой —
.
Далее возьмем букву на первой позиции. На второй позиции мы можем взять все
букв, на третьей — тоже
, на
четвёртой —
, на пятой —
.
И повторяем так раз.
Значит, для каждой буквы на первой позиции (их всего ) будет идти вторая любая буква (их тоже
), третьей
буквой так же будет идти любая из
, четвёртой — любая из
, на пятой — любая из
.
Значит, ответ равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ABCDE" # Алфавит к задаче 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 = "ABCDE" # Алфавит к задаче # Получим все 5-буквенные слова из заданного алфавита for w in product(alf, repeat = 5): w = "".join(w) # Объединим буквы ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Ошибка.
Попробуйте повторить позже
Сколько трёхбуквенных слов можно составить из букв , если буквы в слове не должны повторяться?
Решение аналитически:
На первое место можно поставить любую из четырёх букв. На второе — любую из трёх, ведь одну мы
уже поставили. На третье — любую из двух букв, ведь две буквы мы уже поставили. Значит, ответ равен
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 3-буквенных слов из заданных букв. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ABCD" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: w = x1 + x2 + x3 # Формируем слово if len(w) == len(set(w)): # Если все буквы различны ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "ABCD" # Алфавит к задаче # Получим все 3-буквенные слова из заданного алфавита for w in permutations(alf, 3): w = "".join(w) # join объединяет буквы ans.add(w) # Добавим в множество print(len(ans)) # Выведем нужную длину