Тема 8. Комбинаторика

8.01 Слова в алфавитном порядке

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела комбинаторика
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#59462

Все 5-буквенные слова, составленные из букв К,Н,И,Г,А, записаны в алфавитном порядке. Вот начало списка:

1. ААААА

2. ААААГ

3. ААААИ

4. ААААК

5. ААААН

6. АААГА

.....

Под каким номером в списке идёт слово КНИГА?

Показать ответ и решение

Решение руками

Заменим буквы на цифры: А - 0, Г - 1, И - 2, К - 3, Н – 4.

Теперь запишем 5-буквенные слова в новом алфавите.

1. 00000

2. 00001

3. 00002

4. 00003

5. 00004

6. 00010

.....

Полученный ряд - числа в пятиричной системе счисления, записанные по возрастанию.

Слово КНИГА в пятиричной системе выглядит так – 342105  .

Переводим в десятичную систему счисления: 34210 = 2430
     5      10  .

Но поскольку номер в списке на единицу больше самого числа, то остается добавить к получившемуся числу единицу. Получаем число 2431.

 

Решение программой с помощью циклов

Напишем программу для перебора всевозможных 5-буквенных слов из букв К,Н,И,Г,А в алфавитном порядке. Для этого организуем 5 вложенных циклов for, каждый из которых будет перебирать буквы в порядке А Г И К Н, что соответствует алфавитному списку. Вложенные циклы работают как разряды в числе: сначала меняется последняя буква (самый внутренний цикл), затем предпоследняя и так далее. Это аналогично перебору чисел в порядке возрастания (например, 000, 001, 002...).

После составления очередного слова необходимо его проверить на соответствие слову "КНИГА и если совпадение найдено, выведем его порядковый номер в списке.

alf = ’АГИКН’ # Алфавитный порядок букв: А, Г, И, К, Н
c = 0 # Счётчик для нумерации слов

# Генерация всех 5-буквенных слов через вложенные циклы
for i in alf: # 1-я буква
    for j in alf: # 2-я буква
        for k in alf: # 3-я буква
            for l in alf: # 4-я буква
                for m in alf: # 5-я буква
                    s = i + j + k + l + m # Собираем слово
                    c += 1 # Увеличиваем счётчик
                    if s == ’КНИГА’: # Если текущее слово — "КНИГА"
                        print(c) # Выводим его номер

 

Решение программой с помощью модуля itertools

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все комбинации заданной длины с повторениями из заданного алфавита. Функция product Сохраняет алфавитный порядок, так как перебирает символы в том же порядке, в котором они указаны алфавите.

После составления очередного слова необходимо его проверить на соответствие слову "КНИГА и если совпадение найдено, выведем его порядковый номер в списке.

from itertools import * # Импортируем функцию product

c = 0 # Счётчик для нумерации слов

# Генерируем все возможные 5-буквенные комбинации из букв А,Г,И,К,Н
for i in product(’АГИКН’, repeat = 5):
    s = ’’.join(i) # Преобразуем кортеж символов в строку
    c += 1 # Увеличиваем счётчик на 1 для каждого нового слова
    if s == ’КНИГА’: # Если текущее слово — "КНИГА"
        print(c) # Выводим его номер и завершаем поиск

Ответ: 2431

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!