8.01 Слова в алфавитном порядке
Ошибка.
Попробуйте повторить позже
Все 6-буквенные слова, составленные из букв А,М,Б,Р, записаны в алфавитном порядке. Вот начало списка:
1. АААААА
2. АААААБ
3. АААААМ
4. АААААР
5. ААААБА
.....
Под каким номером в списке идёт последнее слово, которое содержит сочетание букв АМБАР?
Заменим буквы на цифры: А - 0, Б - 1, М - 2, Р - 3.
Теперь запишем 6-буквенные слова в новом алфавите.
1. 000000
2. 000001
3. 000002
4. 000003
5. 000010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию.
Последнее слово, которое содержит сочетание букв АМБАР будет выглядеть так РАМБАР в четверичной системе
выглядит так — .
Переводим в десятичную систему счисления: .
Но поскольку номер в списке на единицу больше самого числа, то остается добавить к получившемуся числу
единицу. Получаем число 3220.
Решение через циклы
Перебираем все 6-буквенные слова из букв АБМР в алфавитном порядке, где каждый цикл отвечает за один символ.
Для каждого слова проверяем, содержит ли оно подстроку АМБАР. Если условие выполняется, запоминаем его номер,
и в конце получаем номер последнего подходящего слова.
s = "АБМР" # Алфавитный порядок букв (как в примере) n = 1 # Счётчик для нумерации слов ans = "" # Для номера последнего слова, содержащего подстроку АМБАР # Генерация всех 6-буквенных слов через вложенные циклы for x1 in s: # 1-я буква for x2 in s: # 2-я буква for x3 in s: # 3-я буква for x4 in s: # 4-я буква for x5 in s: # 5-я буква for x6 in s: # 6-я буква w = x1 + x2 + x3 + x4 + x5 + x6 # Собираем слово if "АМБАР" in w: # Если слово содержит подстроку АМБАР, # запоминаем его номер ans = n n += 1 # увеличиваем счётчик print(ans) # выводим ответ
Решение через itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все комбинации
заданной длины с повторениями из заданного алфавита. Функция product сохраняет алфавитный порядок, так как
перебирает символы в том же порядке, в котором они указаны алфавите.
После составления очередного слова необходимо его проверить на содержание подстроки АМБАР. Если
условие выполняется, запоминаем номер слова. В итоге сохранится номер последнего слова, содержащего
АМБАР.
from itertools import product s = "АБМР" # Алфавитный порядок букв n = 1 # Счётчик для нумерации слов ans = "" # Для номера последнего слова, содержащего подстроку АМБАР # Генерируем все возможные 6-буквенные комбинации for x in product(s, repeat=6): w = "".join(x) # Преобразуем кортеж символов в строку if "АМБАР" in w: ans = n # Запоминаем номер, если слово содержит подстроку АМБАР n += 1 # Увеличиваем счётчик на 1 для каждого нового слова print(ans)
Специальные программы

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

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

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

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

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

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