8.01 Слова в алфавитном порядке
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Все 6-буквенные слова, в составе которых могут быть буквы Р, С, К, Ы, Н, И, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. РРРРРР
2. РРРРРС
3. РРРРРК
4. РРРРРЫ
5. РРРРРН
6. РРРРРИ
7. РРРРСР
Сколько слов между словами “СЫРСЫР” и “СЫРНИК”?
Решение руками:
Исходя из порядка букв в списке, присвоим им следующие коды: Р — 0, С — 1, К — 2, Ы — 3, Н — 4, И — 5. Тогда первое слово — 000000, второе — 000001 и т.д. Слово “СЫРСЫР” будет кодироваться как 130130, а слово “СЫРНИК” будет кодироваться как 130452. Т.к. для кодирования слов потребовалось всего 6 разных букв, то коды будут представлены в шестеричной системе счисления. Вычтем код слова “СЫРСЫР” из кода слова “СЫРНИК” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 121 слово (т.к. при
вычитании номеров мы учитываем на одно слово больше).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из букв Р, С, К, Ы, Н, И. Для
этого организуем вложенных циклов (по одному на каждую позицию в слове). Каждый цикл
перебирает буквы заданной строки, формируя все возможные комбинации. После составления
очередного слова необходимо получить его номер, добавив к счётчику
. Запишем номера слов
“СЫРСЫР” и “СЫРНИК” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, в составе которых могут быть буквы В, Т, А, Р, О, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ВВВВВ
2. ВВВВТ
3. ВВВВА
4. ВВВВР
5. ВВВВО
6. ВВВТВ
Сколько слов между словами “АВТОР” и “ТОВАР”?
Решение аналитически:
Исходя из порядка букв в списке, присвоим им следующие коды: В — 0, Т — 1, А — 2, Р — 3, О — 4. Тогда первое слово — 00000, второе — 00001 и т.д. Слово “АВТОР” будет кодироваться как 20143, а слово “ТОВАР” будет кодироваться как 14023. Т.к. для кодирования слов потребовалось всего 5 разных букв, то коды будут представлены в пятеричной системе счисления. Вычтем код слова “ТОВАР” из кода слова “АВТОР” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 159 слов (т.к. при
вычитании номеров мы учитываем на одно слово больше).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из букв В, Т, А, Р, О. Для этого
организуем вложенных циклов (по одному на каждую позицию в слове). Каждый цикл
перебирает буквы заданной строки, формируя все возможные комбинации. После составления
очередного слова необходимо получить его номер, добавив к счётчику
. Запишем номера
слов “АВТОР” и “ТОВАР” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 4-буквенные слова, в составе которых могут быть буквы Б, А, К, Р, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ББББ
2. БББА
3. БББК
4. БББР
5. ББАБ
Сколько слов между словами “КРАБ” и “БРАК”?
Решение руками:
Исходя из порядка букв в списке, присвоим им следующие коды: Б — 0, А — 1, К — 2, Р — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “КРАБ” будет кодироваться как 2310, а слово “БРАК” будет кодироваться как 0312. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “БРАК” из кода слова “КРАБ” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 125 слов (т.к. при
вычитании номеров мы учитываем на одно слово больше).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из букв Б, А, К, Р. Для этого
организуем вложенных цикла (по одному на каждую позицию в слове). Каждый цикл
перебирает буквы заданной строки, формируя все возможные комбинации. После составления
очередного слова необходимо получить его номер, добавив к счётчику
. Запишем номера
слов “КРАБ” и “БРАК” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 4-буквенные слова, в составе которых могут быть буквы Т, О, С, П, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ТТТТ
2. ТТТО
3. ТТТС
4. ТТТП
5. ТТОТ
Сколько слов между словами “СТОП” и “ПОСТ”?
Решение руками:
Исходя из порядка букв в списке, присвоим им следующие коды: Т — 0, О — 1, С — 2, П — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “ПОСТ” , будет кодироваться как 3120, а слово “СТОП” будет кодироваться как 2013. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “ПОСТ” из кода слова “СТОП” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 80 слов (т.к. при
вычитании номеров мы учитываем на одно слово больше).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из букв Т, О, С, П. Для этого
организуем вложенных цикла (по одному на каждую позицию в слове). Каждый цикл
перебирает буквы заданной строки, формируя все возможные комбинации. После составления
очередного слова необходимо получить его номер, добавив к счётчику
. Запишем номера
слов “СТОП” и “ПОСТ” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, в составе которых могут быть буквы А, С, Д, Р, Е, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ААААА
2. ААААС
3. ААААД
4. ААААР
5. ААААЕ
6. АААСА
Сколько слов между словами “СРЕДА” и “АДРЕС”?
Решение руками:
Исходя из порядка букв в списке, присвоим им следующие коды: А — 0, С — 1, Д — 2, Р — 3, Е — 4. Тогда первое слово — 00000, второе — 00001 и т.д. Слово “СРЕДА” будет кодироваться как 13420, а слово “АДРЕС” будет кодироваться как 02341. Т.к. для кодирования слов потребовалось всего 5 разных букв, то коды будут представлены в пятеричной системе счисления. Вычтем код слова “АДРЕС” из кода слова “СРЕДА” и получим следующее:
Разница номеров слов составляет а значит между ними ровно 763 слова (т.к. при
вычитании номеров мы учитываем на одно слово больше).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из букв А, С, Д, Р, Е. Для этого
организуем вложенных циклов (по одному на каждую позицию в слове). Каждый цикл
перебирает буквы заданной строки, формируя все возможные комбинации. После составления
очередного слова необходимо получить его номер, добавив к счётчику
. Запишем номера
слов “СРЕДА” и “АДРЕС” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 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) # Выводим ответ
Ошибка.
Попробуйте повторить позже
Все -буквенные слова, в составе которых могут быть буквы Р, С, К, Ы, Н, И, записаны в определённом порядке и
пронумерованы, начиная с
. Ниже приведено начало списка.
1. CCCCCC
2. CCCCCЫ
3. СССССР
4. СССССН
5. СССССИ
6. СССССК
7. ССССЫС
…
Сколько слов между словами "КИСКИС"и "КЫСКЫС"?
Решение аналитически:
Пусть С = , Ы =
, Р =
, Н =
, И =
, К =
в шестиричной системе счисления. Тогда слово «КЫСКЫС»
равно
, слово «КИСКИС» равно
. Переведём в десятичную систему счисления:
,
. Количество слов между ними равно
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из букв С, Ы, Р, Н, И, К. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику
.
Запишем номера слов “КЫСКЫС” и “КИСКИС” в переменные, чтобы вычислить, сколько между ними оказалось
слов.
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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все -буквенные слова, в составе которых могут быть буквы Н, Р, Д, О, записаны в определённом порядке и
пронумерованы, начиная с
. Ниже приведено начало списка.
. НННН
. НННР
. НННД
. НННО
. ННРН
Под каким номером в списке идёт слово “ДРОН”?
Решение аналитически:
Закодируем данные буквы, используя список: Н - , Р -
, Д -
, О -
. Так как всего
буквы, то кодовое слово -
это число в четверичной системе счисления, для слова ДРОН кодовым является
, переведем его в десятичную систему
счисления:
Так как в списке, который нам дали в задаче, слова считаются с , то к полученному нами номеру нужно прибавить
.
Получим ответ:
Решение программой с помощью модуля 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)
Ошибка.
Попробуйте повторить позже
Все 3-буквенные слова, в составе которых могут быть буквы О, С, Н, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. ООО
2. ООС
3. ООН
4. ОСО
...
Сколько слов между словами “СОН” и “НОС”?
Решение аналитически:
Преобразуем всё к троичной системе счисления:
1. ООО = 000
2. ООС = 001
3. ООН = 002
Получается: О – 0, С – 1, Н – 2.
СОН – 102, НОС – 201.
Переводим в 10СС: . Количество слов между ними = 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) # Найдем разницу номеров. Такая разница учитывает лишнее слово, вычтем его для получения ответа.
Ошибка.
Попробуйте повторить позже
Все 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 обьединит символы, оставим кавычки пустыми, чтобы между буквами не было разделителей.
Ошибка.
Попробуйте повторить позже
Все 4-буквенные слова, составленные из букв Г, Е, К, Э, записаны в алфавитном порядке. Вот начало списка:
1. ГГГГ
2. ГГГЕ
3. ГГГК
4. ГГГЭ
5. ГГЕГ
В ответ запишите позицию слова ’КЕГЭ’ в данном списке.
Решение руками:
Закодируем данные буквы, используя список: Г - , Е -
, К -
, Э -
. Так как всего
буквы,
то кодовое слово - это число в четверичной системе счисления, для слова КЕГЭ кодовым является
,
переведем его в десятичную систему счисления:
Так как в списке,
который нам дали в задаче, слова считаются с
, то к полученному нами номеру нужно прибавить
.
Получим ответ:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из букв Г, Е, К, Э. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику
.
Выведем номер нужного слова.
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)
Ошибка.
Попробуйте повторить позже
Все 7-буквенные слова, составленные из букв Д, В, Е, Р, Ь записаны в алфавитном порядке. Вот начало списка:
1. ВВВВВВВ
2. ВВВВВВД
3. ВВВВВВЕ
4. ВВВВВВР
5. ВВВВВВЬ
6. ВВВВВДВ
…
Под каким номером находится первое слово, не содержащее буквы В?
Решение аналитически:
Переведём буквы в пятеричную систему: В - 0, Д - 1, Е - 2, Р - 3, Ь - 4. Первое слово, не содержащее В -
ДДДДДДД, значит, .
. Так как нумерация слов идёт с 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)
Ошибка.
Попробуйте повторить позже
Все -буквенные слова, в составе которых могут быть буквы В, Д, З, Е, А, записаны в определённом порядке и
пронумерованы, начиная с
Ниже приведено начало списка.
1. ВВВВВВ
2. ВВВВВД
3. ВВВВВЗ
4. ВВВВВЕ
5. ВВВВВА
6. ВВВВДВ
…
Под каким номером в списке идёт слово «ЗВЕЗДА»?
Решение аналитически:
Закодируем данные буквы, используя список: В - , Д -
, З -
, Е -
, А -
. Так как всего
букв, то
кодовое слово - это число в пятеричной системе счисления, для слова ЗВЕЗДА кодовым является
,
переведем его в десятичную систему счисления:
Так как в списке, который нам дали в задаче, слова считаются с , то к полученному нами номеру нужно прибавить
.
Получим ответ:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из букв В, Д, З, Е, А. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику
.
Выведем номер нужного слова.
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)
Ошибка.
Попробуйте повторить позже
Все 4-буквенные слова, в составе которых могут быть буквы Н, Р, Д, О, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.
1. НННН
2. НННР
3. НННД
4. НННО
5. ННРН
Под каким номером в списке идёт слово "РОНД"?
Решение аналитически:
Обозначим буквы: Н – 0, Р – 1, Д – 2, О – 3.
Тогда слово РОНД – это
Но так как в списке нумерация начинается с единицы, то номер этого слова: .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из букв Н, Р, Д, О. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику
.
Выведем номер нужного слова.
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)
Ошибка.
Попробуйте повторить позже
Все -буквенные слова, в составе которых могут быть буквы К, О, Ф, Е записаны в алфавитном порядке. Вот начало
списка :
. ЕЕЕЕЕ
. ЕЕЕЕК
. ЕЕЕЕО
. ЕЕЕЕФ
. ЕЕЕКЕ
Укажите номер последнего слова, в котором ровно одна буква Ф, а буква Е не встречается ни разу.
Решение аналитически:
Для начала дадим каждое букве численное значение: Е - 0, К - 1, О - 2, Ф - 3. Как мы видим, данные числа
представляют собой цифры четверичной системы счисления. Наибольшее число, буквы которого будут удовлетворять
условию выглядит следующим образом: ФОООО =
Переведём данное число в десятичную систему счисления: =
Поскольку нам нужно определить номер строки, на которой встречается данное слово, а отсчёт строк начинается с 1, то
к полученному значению нужно прибавить :
.
Ответ:
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 4-буквенных слов из букв Е, К, О, Ф. Для этого организуем
вложенных цикла (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к счётчику
.
Выведем номер нужного слова.
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)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв П,Ю,Р,Е, записаны в алфавитном порядке. Вот начало списка:
1. ЕЕЕЕЕ
2. ЕЕЕЕП
3. ЕЕЕЕР
4. ЕЕЕЕЮ
5. ЕЕЕПЕ
.....
На каком месте от начала списка стоит слово РЕППЮ?
Решение руками:
Заменим буквы на цифры: Е - 0, П - 1, Р - 2, Ю - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово РЕППЮ в
числовом алфавите будет иметь вид .
Переведем полученное значение в десятичную систему счисления:
Тогда получится, что слово РЕППЮ стоит на 536 месте (+1, так как на первом месте стоит 0, на втором - 1, на
третьем - 2 и тд).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из букв Е, П, Р, Ю. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к
счётчику
. Выведем номер нужного слова.
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)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Г,О,Р,А записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААГ
3. ААААО
4. ААААР
5. АААГА
.....
Запишите слово, которое стоит под номером 222.
Решение аналитически:
Заменим буквы на цифры: А - 0, Г - 1, О - 2, Р - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Так как порядковый номер
слова всегда на единицу больше, чем само слово, то переведем 221 в четверичную систему счисления: .
Добавим в начало незначащий 0, так как слова 5-буквенные, получим 03131, остается только обратно заменить цифры
на буквы.
Значит на 222 месте стоит слово АРГРГ.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из букв А, Г, О, Р. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. После составления очередного слова необходимо получить его номер, добавив к
счётчику
. Выведем нужное слово.
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)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Л,О,С,Ь, записаны в алфавитном порядке. Вот начало списка:
1. ЛЛЛЛЛ
2. ЛЛЛЛО
3. ЛЛЛЛС
4. ЛЛЛЛЬ
5. ЛЛЛОЛ
.....
Укажите количество слов, которые стоят между словами ОЛЬСЬ и СОЬЬЛ(включая эти слова).
Решение аналитически:
Заменим буквы на цифры: Л - 0, О - 1, С - 2, Ь - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово СОЬЬЛ в
числовом алфавите будет иметь вид , а слово ОЛЬСЬ
.
Переведем полученные значения в десятичную систему счисления:
Тогда получится, что между словами СОЬЬЛ и ОЛЬСЬ находится слов (+1, так как
учитываются оба этих слова).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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).
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв А,Б,В, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААБ
3. ААААВ
4. АААБА
.....
Запишите слово, которое стоит под номером 167.
Решение аналитически:
Заменим буквы на цифры: А - 0, Б - 1, В - 2.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00010
.....
Полученный ряд - числа в троичной системе счисления, записанные по возрастанию. Так как порядковый номер
слова всегда на единицу больше, чем само слово, то переведем 166 в троичную систему счисления: .
Значит на 167 месте стоит слово ВААББ.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв П, И, Р, С, записаны в алфавитном порядке. Вот начало списка:
1. ИИИИИ
2. ИИИИП
3. ИИИИР
4. ИИИИС
5. ИИИПИ
.....
Запишите слово, которое стоит под номером 429.
Решение руками
Обозначим буквы: И – 0, П – 1, Р – 2, С – 3.
Так как в списке нумерация начинается с единицы, то нас интересует номер .
Это слово: ПРРСИ
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 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)