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

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

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

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

Задача 21#7265Максимум баллов за задание: 1

Все 6-буквенные слова, в составе которых могут быть буквы Р, С, К, Ы, Н, И, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. РРРРРР

2. РРРРРС

3. РРРРРК

4. РРРРРЫ

5. РРРРРН

6. РРРРРИ

7. РРРРСР

...

Сколько слов между словами “СЫРСЫР” и “СЫРНИК”?

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

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

Исходя из порядка букв в списке, присвоим им следующие коды: Р — 0, С — 1, К — 2, Ы — 3, Н — 4, И — 5. Тогда первое слово — 000000, второе — 000001 и т.д. Слово “СЫРСЫР” будет кодироваться как 130130, а слово “СЫРНИК”  будет кодироваться как 130452. Т.к. для кодирования слов потребовалось всего 6 разных букв, то коды будут представлены в шестеричной системе счисления. Вычтем код слова “СЫРСЫР”  из кода слова “СЫРНИК”  и получим следующее:

    130452
 −         6
----1301306---
       3226

Разница номеров слов составляет 3226 = 12210,  а значит между ними ровно 121 слово (т.к. при вычитании номеров мы учитываем на одно слово больше).

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

Напишем программу для перебора всевозможных 6-буквенных слов из букв Р, С, К, Ы, Н, И. Для этого организуем 6  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Запишем номера слов “СЫРСЫР” и “СЫРНИК” в переменные, чтобы вычислить, сколько между ними оказалось слов.

alf = "РСКЫНИ" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
res1, res2 = 0, 0 # Переменные для хранения номеров нужных слов
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for p in alf:
                    for o in alf:
                        s = i + j + k + l + p + o # Формируем слово
                        c += 1 # Обновляем номер слова
                        if s == "СЫРСЫР": # Проверяем получившееся слово, записываем его номер
                            res1 = c
                        if s == "СЫРНИК":
                            res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номера слов “СЫРСЫР” и “СЫРНИК” в переменные, чтобы вычислить, сколько между ними оказалось слов.

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых шести словах из условия.
# Сначала идёт Р, далее добавляется С, К, Ы, Н, И.
# Значит правильный порядок: ‘‘РСКЫНИ’’.
t = product("РСКЫНИ", repeat = 6) # repeat обозначает количество букв, в заданных словах их 6
c, k, res1, res2 = 0, 0, 0 ,0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    k += 1 # Обновим номер слова
    if s == "СЫРСЫР": # Записываем номер первого нужного слова
        res1 = c
    if s == "СЫРНИК": # Записываем номер второго нужного слова
        res2 = k
print(res2-res1-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 121

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

Задача 22#7266Максимум баллов за задание: 1

Все 5-буквенные слова, в составе которых могут быть буквы В, Т, А, Р, О, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ВВВВВ

2. ВВВВТ

3. ВВВВА

4. ВВВВР

5. ВВВВО

6. ВВВТВ

...

Сколько слов между словами “АВТОР” и “ТОВАР”?

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

Решение аналитически:

Исходя из порядка букв в списке, присвоим им следующие коды: В — 0, Т — 1, А — 2, Р — 3, О — 4. Тогда первое слово — 00000, второе — 00001 и т.д. Слово “АВТОР” будет кодироваться как 20143, а слово “ТОВАР”  будет кодироваться как 14023. Т.к. для кодирования слов потребовалось всего 5 разных букв, то коды будут представлены в пятеричной системе счисления. Вычтем код слова “ТОВАР”  из кода слова “АВТОР”  и получим следующее:

    201435
 −  14023
---------5---
     11205

Разница номеров слов составляет 11205 = 16010,  а значит между ними ровно 159 слов (т.к. при вычитании номеров мы учитываем на одно слово больше).

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

Напишем программу для перебора всевозможных 5-буквенных слов из букв В, Т, А, Р, О. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Запишем номера слов “АВТОР” и “ТОВАР” в переменные, чтобы вычислить, сколько между ними оказалось слов.

alf = "ВТАРО" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
res1, res2 = 0, 0 # Переменные для хранения номеров нужных слов
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for p in alf:
                    s = i + j + k + l + p # Формируем слово
                    c += 1 # Обновляем номер слова
                    if s == "АВТОР": # Проверяем получившееся слово, записываем его номер
                        res1 = c
                    if s == "ТОВАР":
                        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номера слов “АВТОР” и “ТОВАР” в переменные, чтобы вычислить, сколько между ними оказалось слов.

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых пяти словах из условия.
# Сначала идёт В, далее добавляется Т, А, Р, О.
# Значит правильный порядок: ‘‘ВТАРО’’.
t = product("ВТАРО", repeat = 5) # repeat обозначает количество букв, в заданных словах их 5
c, res1, res2 = 0, 0, 0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "АВТОР": # Проверяем получившееся слово, записываем его номер
        res1 = c
    if s == "ТОВАР":
        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 159

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

Задача 23#7267Максимум баллов за задание: 1

Все 4-буквенные слова, в составе которых могут быть буквы Б, А, К, Р, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ББББ

2. БББА

3. БББК

4. БББР

5. ББАБ

...

Сколько слов между словами “КРАБ” и “БРАК”?

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

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

Исходя из порядка букв в списке, присвоим им следующие коды: Б — 0, А — 1, К — 2, Р — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “КРАБ” будет кодироваться как 2310, а слово “БРАК”  будет кодироваться как 0312. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “БРАК”  из кода слова “КРАБ”  и получим следующее:

   23104
−   312
--------4--
   13324

Разница номеров слов составляет 13324 = 12610,  а значит между ними ровно 125 слов (т.к. при вычитании номеров мы учитываем на одно слово больше).

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

Напишем программу для перебора всевозможных 4-буквенных слов из букв Б, А, К, Р. Для этого организуем 4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Запишем номера слов “КРАБ” и “БРАК” в переменные, чтобы вычислить, сколько между ними оказалось слов.

alf = "БАКР" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
res1, res2 = 0, 0 # Переменные для хранения номеров нужных слов
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                s = i + j + k + l # Формируем слово
                c += 1 # Обновляем номер слова
                if s == "КРАБ": # Проверяем получившееся слово, записываем его номер
                    res1 = c
                if s == "БРАК":
                    res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номера слов “КРАБ” и “БРАК” в переменные, чтобы вычислить, сколько между ними оказалось слов.

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Б, далее добавляется А, К, Р.
# Значит правильный порядок: ‘‘БАКР’’.
t = product("БАКР", repeat = 4) # repeat обозначает количество букв, в заданных словах их 4
c, res1, res2 = 0, 0, 0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "КРАБ": # Проверяем получившееся слово, записываем его номер
        res1 = c
    if s == "БРАК":
        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 125

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

Задача 24#7268Максимум баллов за задание: 1

Все 4-буквенные слова, в составе которых могут быть буквы Т, О, С, П, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ТТТТ

2. ТТТО

3. ТТТС

4. ТТТП

5. ТТОТ

...

Сколько слов между словами “СТОП” и “ПОСТ”?

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

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

Исходя из порядка букв в списке, присвоим им следующие коды: Т — 0, О — 1, С — 2, П — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “ПОСТ”  , будет кодироваться как 3120, а слово “СТОП”  будет кодироваться как 2013. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “ПОСТ”  из кода слова “СТОП”  и получим следующее:

   31204
−  2013
--------4--
   11014

Разница номеров слов составляет 11014 = 8110,  а значит между ними ровно 80 слов (т.к. при вычитании номеров мы учитываем на одно слово больше).

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

Напишем программу для перебора всевозможных 4-буквенных слов из букв Т, О, С, П. Для этого организуем 4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Запишем номера слов “СТОП” и “ПОСТ” в переменные, чтобы вычислить, сколько между ними оказалось слов.

alf = "ТОСП" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
res1, res2 = 0, 0 # Переменные для хранения номеров нужных слов
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                s = i + j + k + l # Формируем слово
                c += 1 # Обновляем номер слова
                if s == "СТОП": # Проверяем получившееся слово, записываем его номер
                    res1 = c
                if s == "ПОСТ":
                    res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Т, далее добавляется О, С, П.
# Значит правильный порядок: ‘‘ТОСП’’
t = product("ТОСП", repeat = 4) # repeat обозначает количество букв, в заданных словах их 4
c, res1, res2 = 0, 0, 0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "СТОП": # Проверяем получившееся слово, записываем его номер
        res1 = c
    if s == "ПОСТ":
        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 80

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

Задача 25#7269Максимум баллов за задание: 1

Все 5-буквенные слова, в составе которых могут быть буквы А, С, Д, Р, Е, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ААААА

2. ААААС

3. ААААД

4. ААААР

5. ААААЕ

6. АААСА

...

Сколько слов между словами “СРЕДА” и “АДРЕС”?

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

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

Исходя из порядка букв в списке, присвоим им следующие коды: А — 0, С — 1, Д — 2, Р — 3, Е — 4. Тогда первое слово — 00000, второе — 00001 и т.д. Слово “СРЕДА” будет кодироваться как 13420, а слово “АДРЕС”  будет кодироваться как 02341. Т.к. для кодирования слов потребовалось всего 5 разных букв, то коды будут представлены в пятеричной системе счисления. Вычтем код слова “АДРЕС”  из кода слова “СРЕДА”  и получим следующее:

    134205
 −   2341
---------5---
    110245

Разница номеров слов составляет 110245 = 76410,  а значит между ними ровно 763 слова (т.к. при вычитании номеров мы учитываем на одно слово больше).

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

Напишем программу для перебора всевозможных 5-буквенных слов из букв А, С, Д, Р, Е. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Запишем номера слов “СРЕДА” и “АДРЕС” в переменные, чтобы вычислить, сколько между ними оказалось слов.

alf = "АСДРЕ" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
res1, res2 = 0, 0 # Переменные для хранения номеров нужных слов
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for p in alf:
                    s = i + j + k + l + p # Формируем слово
                    c += 1 # Обновляем номер слова
                    if s == "СРЕДА": # Проверяем получившееся слово, записываем его номер
                        res1 = c
                    if s == "АДРЕС":
                        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт А, далее добавляется С, Д, Р, Е.
# Значит правильный порядок: ‘‘АСДРЕ’’.
t = product("АСДРЕ", repeat = 5) # repeat обозначает количество букв, в заданных словах их 5
c, res1, res2 = 0, 0, 0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "СРЕДА": # Проверяем получившееся слово, записываем его номер
        res1 = c
    if s == "АДРЕС":
        res2 = c
print(abs(res2-res1)-1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 763

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

Задача 26#22909Максимум баллов за задание: 1

Все 5-буквенные слова, в составе которых могут быть буквы К, А, М, Е, О записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ККККК

2. ККККА

3. ККККМ

4. ККККЕ

5. ККККО

6. КККАК

Сколько слов, оканчивающихся на ОМ, между словами «КОМОК» и «ЕМКОМ»?

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

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

Преобразуем буквы в пятеричную систему счисления: К - 0, А - 1, М - 2, Е - 3, О - 4.

То есть нам нужно найти количество слов, оканчивающихся на 42 м еж ду 04240 и 32042
             5       5  .

Выпишем подходящие слова по порядке:

1. 04242

2. 04342

...

n. 31442.

Значит, нам нужно количество чисел от 425  до 3145  : 3145 − 425 + 1 = 84− 22 + 1 = 63  .

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

Напишем программу для перебора всевозможных 5-буквенных слов из букв К, А, М, Е, О. Для этого организуем    5  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Пропишем 2  условия.

1. Переменная flag будет единицей, если слово находится между заданными условием.

2. Слово имеет нужное окончание (для этого условия будем складывать две последние буквы, имеющие индекс   − 1  и − 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. Она генерирует все возможные слова из заданного алфавита. Пропишем 2  условия.

1. Переменная f будет единицей, если слово находится между заданными условием.

2. Слово имеет нужное окончание (для этого условия будем складывать две последние буквы, имеющие индекс   − 1  и − 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) # Выводим ответ

Ответ: 63

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

Задача 27#25768Максимум баллов за задание: 1

Все 6  -буквенные слова, в составе которых могут быть буквы Р, С, К, Ы, Н, И, записаны в определённом порядке и пронумерованы, начиная с 1  . Ниже приведено начало списка.

1. CCCCCC

2. CCCCCЫ

3. СССССР

4. СССССН

5. СССССИ

6. СССССК

7. ССССЫС

Сколько слов между словами "КИСКИС"и "КЫСКЫС"?

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

Решение аналитически:

Пусть С = 0  , Ы = 1  , Р = 2  , Н = 3  , И = 4  , К = 5  в шестиричной системе счисления. Тогда слово «КЫСКЫС» равно 510510
      6  , слово «КИСКИС» равно 540540
      6  . Переведём в десятичную систему счисления: 510510 = 40362
      6       10  , 5405406 = 4426810  . Количество слов между ними равно 44268 − 40362 − 1 = 3905

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

Напишем программу для перебора всевозможных 6-буквенных слов из букв С, Ы, Р, Н, И, К. Для этого организуем       6  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику      1  . Запишем номера слов “КЫСКЫС” и “КИСКИС” в переменные, чтобы вычислить, сколько между ними оказалось слов.

s = "СЫРНИК" # Алфавит к задаче
count = 0 # Переменная, обозначающая номер текущего слова
start, finish = 0, 0 # Переменные для хранения номеров нужных слов
for a in s:
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    for f in s:
                        slovo = a + b + c + d + e + f # Формируем слово
                        count += 1 # Обновляем номер слова
                        if slovo == "КЫСКЫС": # Проверяем получившееся слово, записываем его номер
                            start = count
                        if slovo == "КИСКИС":
                            finish = count
print(finish - start - 1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

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

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

from itertools import product
# Используем product. Порядок использования букв можно заметить в первых шести словах из условия.
# Сначала идёт С, далее добавляется Ы, Р, Н, И, К.
# Значит правильный порядок: ‘‘СЫРНИК’’.
start, finish = 0, 0 # Переменные, обозначающие номера нужных слов
count = 0 # Номер текущего слова
for i in product("СЫРНИК", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6
    count += 1 # Обновим номер слова
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    if s == "КЫСКЫС": # Проверяем получившееся слово, записываем его номер
        start = count
    if s == "КИСКИС":
        finish = count
print(finish - start - 1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 3905

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

Задача 28#26060Максимум баллов за задание: 1

Все 4  -буквенные слова, в составе которых могут быть буквы Н, Р, Д, О, записаны в определённом порядке и пронумерованы, начиная с 1  . Ниже приведено начало списка.

1  . НННН

2  . НННР

3  . НННД

4  . НННО

5  . ННРН

Под каким номером в списке идёт слово “ДРОН”?

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

Решение аналитически:

Закодируем данные буквы, используя список: Н - 0  , Р - 1  , Д - 2  , О - 3  . Так как всего 4  буквы, то кодовое слово - это число в четверичной системе счисления, для слова ДРОН кодовым является 2130  , переведем его в десятичную систему счисления:            3     2      1     0
21304 = 2 ⋅4 + 1⋅4 + 3 ⋅4 + 0⋅4 = 15610
Так как в списке, который нам дали в задаче, слова считаются с 1  , то к полученному нами номеру нужно прибавить      1  .
Получим ответ: 157

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

Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Проверим каждое слово, при нахождении нужного (“ДРОН”) выведем его номер.

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах.
# Сначала идёт Н, далее добавляется Р, Д, О.
# Значит правильный порядок: ‘‘НРДО’’.
t = product("НРДО", repeat=4) # repeat обозначает количество букв, в заданных словах их 4
c = 0 # Переменная, обозначающая номер текущего слова
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "ДРОН": # Проверяем главное условие задачи, выводим номер нужного слова
        print(c)

Ответ: 157

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

Задача 29#26141Максимум баллов за задание: 1

Все 3-буквенные слова, в составе которых могут быть буквы О, С, Н, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ООО

2. ООС

3. ООН

4. ОСО

...

Сколько слов между словами “СОН” и “НОС”?

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

Решение аналитически:

Преобразуем всё к троичной системе счисления:

1. ООО = 000

2. ООС = 001

3. ООН = 002

Получается: О – 0, С – 1, Н – 2.

СОН – 102, НОС – 201.

Переводим в 10СС: 1023 = 9+ 2 = 11,2013 = 18+ 1 = 19  . Количество слов между ними = 19 – 11 – 1 = 7.

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых трёх словах из условия.
# Сначала идёт О, далее добавляется С, Н.
# Значит правильный порядок: ‘‘ОСН’’.
t = product("ОСН", repeat = 3) # repeat обозначает количество букв, в заданных словах их 3
c, res1, res2 = 0, 0, 0 # Переменные, обозначающие номер текущего слова и номера нужных слов
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "СОН": # Проверяем получившееся слово, записываем его номер
        res1 = c
    if s == "НОС":
        res2 = c
print(abs(res1 - res2) - 1) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.

Ответ: 7

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

Задача 30#26943Максимум баллов за задание: 1

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

1. АААА

2. АААК

3. АААЛ

4. АААП

5. ААКА

Запишите слово, которое стоит на 226-м месте от начала списка.

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

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

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

from itertools import product
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт А, далее добавляется К, Л, П.
# Значит правильный порядок: ‘‘АКЛП’’.
ans = 0 # Номер текущего слова
for i in product("АКЛП", repeat=4): # repeat обозначает количество букв, в заданных словах их 4
    ans += 1 # Обновим номер слова
    if ans == 226: print("".join(i)) #Выведем 226 слово. join обьединит символы, оставим кавычки пустыми, чтобы между буквами не было разделителей.

Ответ: ПЛАК

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

Задача 31#26970Максимум баллов за задание: 1

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

1. ГГГГ

2. ГГГЕ

3. ГГГК

4. ГГГЭ

5. ГГЕГ

В ответ запишите позицию слова ’КЕГЭ’ в данном списке.

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

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

Закодируем данные буквы, используя список: Г - 0  , Е - 1  , К - 2  , Э - 3  . Так как всего 4  буквы, то кодовое слово - это число в четверичной системе счисления, для слова КЕГЭ кодовым является 2103  , переведем его в десятичную систему счисления:            3     2     1      0
21034 = 2 ⋅4 + 1⋅4 + 0 ⋅4 + 3⋅4 = 14710  Так как в списке, который нам дали в задаче, слова считаются с 1  , то к полученному нами номеру нужно прибавить 1  .
Получим ответ: 148

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

Напишем программу для перебора всевозможных 4-буквенных слов из букв Г, Е, К, Э. Для этого организуем 4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику      1  . Выведем номер нужного слова.

alf = "ГЕКЭ" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                s = i + j + k + l # Формируем слово
                c += 1 # Обновляем номер слова
                if s == "КЕГЭ": # Проверяем получившееся слово, выводим его номер
                    print(c)
                    break

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Г, далее добавляется Е, К, Э.
# Значит правильный порядок: ‘‘ГЕКЭ’’.
t = product("ГЕКЭ", repeat = 4) # repeat обозначает количество букв, в заданных словах их 4
c = 0 # Переменная, обозначающая номер текущего слова
for i in t:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "КЕГЭ": # Проверяем получившееся слово, выводим его номер
        print(c)

Ответ: 148

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

Задача 32#27990Максимум баллов за задание: 1

Все 7-буквенные слова, составленные из букв Д, В, Е, Р, Ь записаны в алфавитном порядке. Вот начало списка:

1. ВВВВВВВ

2. ВВВВВВД

3. ВВВВВВЕ

4. ВВВВВВР

5. ВВВВВВЬ

6. ВВВВВДВ

Под каким номером находится первое слово, не содержащее буквы В?

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

Решение аналитически:

Переведём буквы в пятеричную систему: В - 0, Д - 1, Е - 2, Р - 3, Ь - 4. Первое слово, не содержащее В - ДДДДДДД, значит, 1111111
      5  . 1111111 = 19531
      5  . Так как нумерация слов идёт с 1, ответ: 19531 + 1 = 19532.

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых пяти словах из условия.
# Сначала идёт В, далее добавляется Д, Е, Р, Ь.
# Значит правильный порядок: ‘‘ВДЕРЬ’’.
a = product("ВДЕРЬ", repeat = 7) # repeat обозначает количество букв, в заданных словах их 7
c = 0 # Переменная, обозначающая номер текущего слова
for i in a:
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if not "B" in s: # Проверяем наличие буквы В
        print(c, s)

Ответ: 19532

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

Задача 33#29355Максимум баллов за задание: 1

Все 6  -буквенные слова, в составе которых могут быть буквы В, Д, З, Е, А, записаны в определённом порядке и пронумерованы, начиная с 1.  Ниже приведено начало списка.

1. ВВВВВВ

2. ВВВВВД

3. ВВВВВЗ

4. ВВВВВЕ

5. ВВВВВА

6. ВВВВДВ

Под каким номером в списке идёт слово «ЗВЕЗДА»?

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

Решение аналитически:

Закодируем данные буквы, используя список: В - 0  , Д - 1  , З - 2  , Е - 3  , А - 4  . Так как всего 5  букв, то кодовое слово - это число в пятеричной системе счисления, для слова ЗВЕЗДА кодовым является 203214  , переведем его в десятичную систему счисления:             5      4     3      2     1      0
2032145 = 2 ⋅5 + 0⋅5 + 3⋅5 + 2⋅5 + 1⋅5  + 4⋅5 =  668410
Так как в списке, который нам дали в задаче, слова считаются с 1  , то к полученному нами номеру нужно прибавить      1  .
Получим ответ: 6685

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

Напишем программу для перебора всевозможных 6-буквенных слов из букв В, Д, З, Е, А. Для этого организуем    6  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику      1  . Выведем номер нужного слова.

alf = "ВДЗЕА" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for m in alf:
                    for p in alf:
                        s = i + j + k + l + m + p # Формируем слово
                        c += 1 # Обновляем номер слова
                        if s == "ЗВЕЗДА": # Проверяем получившееся слово, выводим его номер
                            print(c)
                            break

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых пяти словах из условия.
# Сначала идёт В, далее добавляется Д, З, Е, А.
# Значит правильный порядок: ‘‘ВДЗЕА’’.
c = 0 # Переменная, обозначающая номер текущего слова
for i in product("ВДЗЕА", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "ЗВЕЗДА": # Проверяем получившееся слово, выводим его номер
        print(c)

Ответ: 6685

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

Задача 34#29443Максимум баллов за задание: 1

Все 4-буквенные слова, в составе которых могут быть буквы Н, Р, Д, О, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. НННН

2. НННР

3. НННД

4. НННО

5. ННРН

...

Под каким номером в списке идёт слово "РОНД"?

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

Решение аналитически:

Обозначим буквы: Н – 0, Р – 1, Д – 2, О – 3.

Тогда слово РОНД – это 1302 = 114
   4      10

Но так как в списке нумерация начинается с единицы, то номер этого слова: 114 + 1 = 115  .

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

Напишем программу для перебора всевозможных 4-буквенных слов из букв Н, Р, Д, О. Для этого организуем  4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику      1  . Выведем номер нужного слова.

alf = "НРДО" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                s = i + j + k + l # Формируем слово
                c += 1 # Обновляем номер слова
                if s == "РОНД": # Проверяем получившееся слово, выводим его номер
                    print(c)
                    break

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Н, далее добавляется Р, Д, О.
# Значит правильный порядок: ‘‘НРДО’’.
c = 0 # Переменная, обозначающая номер текущего слова
for i in product("НРДО", repeat = 4): # repeat обозначает количество букв, в заданных словах их 4
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "РОНД": # Проверяем получившееся слово, выводим его номер
        print(c)

Ответ: 115

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

Задача 35#33504Максимум баллов за задание: 1

Все 5  -буквенные слова, в составе которых могут быть буквы К, О, Ф, Е записаны в алфавитном порядке. Вот начало списка :

1  . ЕЕЕЕЕ

2  . ЕЕЕЕК

3  . ЕЕЕЕО

4  . ЕЕЕЕФ

5  . ЕЕЕКЕ

Укажите номер последнего слова, в котором ровно одна буква Ф, а буква Е не встречается ни разу.

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

Решение аналитически:

Для начала дадим каждое букве численное значение: Е - 0, К - 1, О - 2, Ф - 3. Как мы видим, данные числа представляют собой цифры четверичной системы счисления. Наибольшее число, буквы которого будут удовлетворять условию выглядит следующим образом: ФОООО = 322224

Переведём данное число в десятичную систему счисления: 322224  = 93810

Поскольку нам нужно определить номер строки, на которой встречается данное слово, а отсчёт строк начинается с 1, то к полученному значению нужно прибавить 1  : 938+ 1 = 939  .

Ответ: 939

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

Напишем программу для перебора всевозможных 4-буквенных слов из букв Е, К, О, Ф. Для этого организуем  4  вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику      1  . Выведем номер нужного слова.

a = "ЕКОФ" # Алфавит к задаче
count = 0 # Переменная, обозначающая номер текущего слова
maxim = 0 # Переменная, обозначающая номер последнего слова, подходящего под условие
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    s = x1 + x2 + x3 + x4 + x5 # Формируем слово
                    count += 1 # Обновляем номер слова
                    if s.count("Ф") == 1 and s.count("Е") == 0: # Проверяем получившееся слово, записываем его номер, если встретилась одна буква Ф и ни одной Е
                        maxim = count
print(maxim)

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

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

from itertools import product
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Е, далее добавляется К, О, Ф.
# Значит правильный порядок: ‘‘ЕКОФ’’.
count = 0 # Переменная, обозначающая номер текущего слова
maxim = 0 # Переменная, обозначающая номер последнего слова, подходящего под условие
for i in product("ЕКОФ", repeat=5): # repeat обозначает количество букв, в заданных словах их 5
    count += 1 # Обновим номер слова
    if i.count("Е") == 0 and i.count("Ф") == 1: # Проверяем получившееся слово, записываем его номер, если встретилась одна буква Ф и ни одной Е
        maxim = count
print(maxim)

Ответ: 939

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

Задача 36#50781Максимум баллов за задание: 1

Все 5-буквенные слова, составленные из букв П,Ю,Р,Е, записаны в алфавитном порядке. Вот начало списка:

1. ЕЕЕЕЕ

2. ЕЕЕЕП

3. ЕЕЕЕР

4. ЕЕЕЕЮ

5. ЕЕЕПЕ

.....

На каком месте от начала списка стоит слово РЕППЮ?

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

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

Заменим буквы на цифры: Е - 0, П - 1, Р - 2, Ю - 3.

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

1. 00000

2. 00001

3. 00002

4. 00003

5. 00010

.....

Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово РЕППЮ в числовом алфавите будет иметь вид 201134  .

Переведем полученное значение в десятичную систему счисления: 201134 = 53510

Тогда получится, что слово РЕППЮ стоит на 536 месте (+1, так как на первом месте стоит 0, на втором - 1, на третьем - 2 и тд).

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

Напишем программу для перебора всевозможных 5-буквенных слов из букв Е, П, Р, Ю. Для этого организуем  5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Выведем номер нужного слова.

alf = "ЕПРЮ" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for m in alf:
                    s = i + j + k + l + m # Формируем слово
                    c += 1 # Обновляем номер слова
                    if s == "РЕППЮ": # Проверяем получившееся слово, выводим его номер
                        print(c)
                        break

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Е, далее добавляется П, Р, Ю.
# Значит правильный порядок: ‘‘ЕПРЮ’’.
c = 0 # Переменная, обозначающая номер текущего слова
for i in product("ЕПРЮ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "РЕППЮ": # Проверяем получившееся слово, выводим его номер
        print(c)


Ответ: 536

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

Задача 37#50782Максимум баллов за задание: 1

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

1. ААААА

2. ААААГ

3. ААААО

4. ААААР

5. АААГА

.....

Запишите слово, которое стоит под номером 222.

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

Решение аналитически:

Заменим буквы на цифры: А - 0, Г - 1, О - 2, Р - 3.

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

1. 00000

2. 00001

3. 00002

4. 00003

5. 00010

.....

Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Так как порядковый номер слова всегда на единицу больше, чем само слово, то переведем 221 в четверичную систему счисления: 22110 = 31314  . Добавим в начало незначащий 0, так как слова 5-буквенные, получим 03131, остается только обратно заменить цифры на буквы.
Значит на 222 месте стоит слово АРГРГ.

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

Напишем программу для перебора всевозможных 5-буквенных слов из букв А, Г, О, Р. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику 1  . Выведем нужное слово.

alf = "АГОР" # Алфавит к задаче
c = 0 # Переменная, обозначающая номер текущего слова
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                for m in alf:
                    s = i + j + k + l + m # Формируем слово
                    c += 1 # Обновляем номер слова
                    if c == 222: # Проверяем номер, выводим слово
                        print(s)
                        break

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт А, далее добавляется Г, О, Р.
# Значит правильный порядок: ‘‘АГОР’’.
c = 0 # Переменная, обозначающая номер текущего слова
for i in product("АГОР", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5
    s = ’’.join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if c == 222: # Проверяем номер, выводим слово
        print(s)

Ответ: АРГРГ

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

Задача 38#50783Максимум баллов за задание: 1

Все 5-буквенные слова, составленные из букв Л,О,С,Ь, записаны в алфавитном порядке. Вот начало списка:

1. ЛЛЛЛЛ

2. ЛЛЛЛО

3. ЛЛЛЛС

4. ЛЛЛЛЬ

5. ЛЛЛОЛ

.....

Укажите количество слов, которые стоят между словами ОЛЬСЬ и СОЬЬЛ(включая эти слова).

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

Решение аналитически:

Заменим буквы на цифры: Л - 0, О - 1, С - 2, Ь - 3.

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

1. 00000

2. 00001

3. 00002

4. 00003

5. 00010

.....

Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово СОЬЬЛ в числовом алфавите будет иметь вид 213304  , а слово ОЛЬСЬ− 103234  .

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

213304 = 63610

103234 = 31510

Тогда получится, что между словами СОЬЬЛ и ОЛЬСЬ находится 636 − 315+ 1 = 322  слов (+1, так как учитываются оба этих слова).

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

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Увеличим счётчик, если слово находится между заданными.

s = "ЛОСЬ" # Алфавит к задаче
k = 0 # Счётчик подходящих слов
for a in s:
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    w = a + b + c + d + e # Формируем слово
                    if "ОЛЬСЬ" <= w <= "СОЬЬЛ": # Проверяем, находится ли слово между заданными
                        k += 1
print(k)

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых четырёх словах из условия.
# Сначала идёт Л, далее добавляется О, С, Ь.
# Значит правильный порядок: ‘‘ЛОСЬ’’.
c = 0 # Переменная, обозначающая номер текущего слова
res1 = 0 # Номер первого подходящего слова
res2 = 0 # Номер последнего подходящего слова
for i in product("ЛОСЬ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if s == "ОЛЬСЬ": # Запишем номера первого и последнего слова
        res1 = c
    if s == "СОЬЬЛ":
        res2 = c
print(abs(res2 - res1) + 1) # Вычислим, сколько между ними слов. Не забудем учесть последнее слово (+1).

Ответ: 322

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

Задача 39#50784Максимум баллов за задание: 1

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

1. ААААА

2. ААААБ

3. ААААВ

4. АААБА

.....

Запишите слово, которое стоит под номером 167.

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

Решение аналитически:

Заменим буквы на цифры: А - 0, Б - 1, В - 2.

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

1. 00000

2. 00001

3. 00002

4. 00010

.....

Полученный ряд - числа в троичной системе счисления, записанные по возрастанию. Так как порядковый номер слова всегда на единицу больше, чем само слово, то переведем 166 в троичную систему счисления: 16610 = 200113  .

Значит на 167 месте стоит слово ВААББ.

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

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Выведем слово под нужным номером.

s = "АБВ" # Алфавит к задаче
k = 0 # Счётчик подходящих слов
for a in s:
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    w = a + b + c + d + e # Формируем слово
                    k += 1 # Получаем номер текущего слова
                    if k == 167: # Выводим слово под нужным номером
                        print(w)

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

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

from itertools import *
# Используем product. Порядок использования букв можно заметить в первых словах из условия.
# Сначала идёт А, далее добавляется Б, В.
# Значит правильный порядок: ‘‘АБВ’’.
c = 0 # Переменная, обозначающая номер текущего слова
for i in product("АБВ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5
    s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    c += 1 # Обновим номер слова
    if c == 167: # Выводим слово под нужным номером
        print(s)

Ответ: ВААББ

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

Задача 40#51467Максимум баллов за задание: 1

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

1. ИИИИИ

2. ИИИИП

3. ИИИИР

4. ИИИИС

5. ИИИПИ

.....

Запишите слово, которое стоит под номером 429.

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

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

Обозначим буквы: И – 0, П – 1, Р – 2, С – 3.

Так как в списке нумерация начинается с единицы, то нас интересует номер 428  = 12230
   10       4  .

Это слово: ПРРСИ

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

Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем 5  вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации. Выведем слово под нужным номером.

s = "ИПРС" # Алфавит к задаче
n = 1 # Счётчик подходящих слов
ans = "" # Переменная для записи ответа
for x1 in s:
    for x2 in s:
        for x3 in s:
            for x4 in s:
                for x5 in s:
                    w = x1 + x2 + x3 + x4 + x5 # Формируем слово
                    if n == 429: # Записываем слово под нужным номером
                        ans = w
                    n += 1 # Получаем номер текущего слова
print(ans)

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

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

from itertools import product
# Используем product. Порядок использования букв можно заметить в первых словах из условия.
# Сначала идёт И, далее добавляется П, Р, С.
# Значит правильный порядок: ‘‘ИПРС’’.
s = "ИПРС" # Алфавит к задаче
n = 1 # Переменная, обозначающая номер текущего слова
ans = "" # Переменная для записи ответа
for x in product(s, repeat=5): # repeat обозначает количество букв, в заданных словах их 5
    w = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово
    if n == 429: # Выводим слово под нужным номером
        ans = w
        break
    n += 1 # Обновим номер слова
print(ans)

Ответ: ПРРСИ
Рулетка
Вы можете получить скидку в рулетке!