8.01 Слова в алфавитном порядке
Ошибка.
Попробуйте повторить позже
Все шестибуквенные слова, в составе которых могут быть только русские буквы О, К, Р, У, Г, записаны в алфавитном порядке и пронумерованы начиная с 1.
Ниже приведено начало списка:
- ГГГГГГ
- ГГГГГК
- ГГГГГО
- ГГГГГР
- ГГГГГУ
-
ГГГГКГ
....
Определите сумму номеров первого и последнего слов в списке, в которых только одна буква К и при этом никакая согласная буква не стоит рядом с буквой Г (в том числе и сама буква Г).
Решение аналитически:
Заменим буквы на цифры: Г - 0, К - 1, О - 2, Р - 3, У - 4. Получим новый список:
- 000000
- 000001
- 000002
- 000003
- 000004
-
000010
....
Найдем сначала первое слово, подходящее под условие. Для того чтобы номер был минимальный
поставим букву Г в начало (так как ее числовой эквивалент 0), получаем Г*****. Так как рядом с Г не
может стоять согласная, то следом ставим гласную букву с минимальной цифрой – О, получаем ГО****.
И на две следующие позиции поставим так же буквы ГО, получаем ГОГО**, далее поставим букву К,
мы не можем поставить букву Г, потому что тогда не останется позиции для буквы К. И на последнюю
позицию ставим букву О, так как это буква с минимальным номером, из тех, что мы можем поставить,
получаем ГОГОКО. Заменяя буквы на цифры получим, что для нахождения слова ГОГОК, нужно найти
значение числа в десятичной системе. Им является число
, но поскольку номер в списке на
единицу больше самого числа, то остаётся добавить к получившемуся числу единицу. Получаем число
1308.
Теперь найдем сначала последнее слово, подходящее под условие. Для того чтобы номер был максимальный
поставим букву К в конец, получаем *****К. На остальные позиции просто поставим букву У, так как она имеем
максимальный числовой эквивалент, получаем УУУУУК. Заменяя буквы на цифры получим, что для нахождения
слова УУУУУК, нужно найти значение числа в десятичной системе. Им является число
, но
поскольку номер в списке на единицу больше самого числа, то остаётся добавить к получившемуся числу единицу.
Получаем число 15622.
Найдем сумму их номеров: 1308 + 15622 = 16930.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
alf = "ГКОРУ" # Алфавит к задаче c = 0 # Номер текущего слова arr = [] # Номера всех подходящих слов for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: for n in alf: s = i + j + k + l + m + n # Формируем слово c += 1 # Обновляем номер слова # Проверяем главное условие задачи if s.count("К") == 1 and not("ГГ" in s) and not("ГК" in s) and not("КГ" in s) and not("ГР" in s) and not("РГ" in s): arr.append(c) print(arr[0] + arr[-1]) # Сложим номер первого и последнего слова
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт Г, далее добавляется К, О, Р, У. # Значит правильный порядок: ‘‘ГКОРУ’’. c = 0 # Номер текущего слова m = [] # Номера всех подходящих слов for i in product("ГКОРУ", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова # Проверяем главное условие задачи if s.count("К") == 1 and not("ГГ" in s) and not("ГК" in s) and not("КГ" in s) and not("ГР" in s) and not("РГ" in s): m.append(c) print(m[0] + m[-1]) # Сложим номер первого и последнего слова
Специальные программы

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

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

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

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

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

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