8.01 Слова в алфавитном порядке
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, в составе которых могут быть буквы К, А, М, Е, О записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ККККК
2. ККККА
3. ККККМ
4. ККККЕ
5. ККККО
6. КККАК
…
Сколько слов, оканчивающихся на ОМ, между словами «КОМОК» и «ЕМКОМ»?
Решение руками:
Преобразуем буквы в пятеричную систему счисления: К - 0, А - 1, М - 2, Е - 3, О - 4.
То есть нам нужно найти количество слов, оканчивающихся на .
Выпишем подходящие слова по порядке:
1. 04242
2. 04342
...
n. 31442.
Значит, нам нужно количество чисел от до
:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из букв К, А, М, Е, О. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Пропишем
условия.
1. Переменная flag будет единицей, если слово находится между заданными условием.
2. Слово имеет нужное окончание (для этого условия будем складывать две последние буквы, имеющие индекс и
) Обновим счётчик, если оба условия соблюдены.
flag = 0 # Переменная из условия 1 counter = 0 # Счётчик подходящих слов for a1 in ("КАМЕО"): for a2 in ("КАМЕО"): for a3 in ("КАМЕО"): for a4 in ("КАМЕО"): for a5 in ("КАМЕО"): s = a1 + a2 + a3 + a4 + a5 # Формируем слово if s == "КОМОК": # Проверяем условие 1 flag = 1 if s == "ЕМКОМ": flag = 0 counter += flag * (s[-2] + s[-1]) == "ОМ" # Если оба условия выполнены, то их перемножение даст 1 и счётчик увеличится print(counter) # Выводим ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова
из заданного алфавита. Пропишем условия.
1. Переменная f будет единицей, если слово находится между заданными условием.
2. Слово имеет нужное окончание (для этого условия будем складывать две последние буквы, имеющие индекс и
) Обновим счётчик, если оба условия соблюдены.
from itertools import * t = product("КАМЕО", repeat = 5) # repeat обозначает количество букв, в заданных словах их 5 c, f = 0, 0 # Счётчик подходящих слов и f из условия 1 for i in t: s = "".join(i) if s == "КОМОК": # Проверяем условие 1 f = 1 if s == "ЕМКОМ": f = 0 c += f * ((s[-2] + s[-1]) == "ОМ") # Если оба условия выполнены, то их перемножение даст 1 и счётчик увеличится print(c) # Выводим ответ
Специальные программы

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

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

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

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

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

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