Файл: Кодирование данных, комбинаторика, системы счисления.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 381
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Ещё пример задания:
Р-02. Все 5-буквенные слова, составленные из букв А, О, У, записаны в алфавитном порядке.
Вот начало списка:
1. ААААА
2. ААААО
3. ААААУ
4. АААОА
……
Запишите слово, которое стоит на 240-м месте от начала списка.
Решение (1 способ, перебор с конца):
-
подсчитаем, сколько всего 5-буквенных слов можно составить из трех букв; -
очевидно, что есть всего 3 однобуквенных слова (А, О, У); двух буквенных слов уже 33=9 (АА, АО, АУ, ОА, ОО, ОУ, УА, УО и УУ) -
аналогично можно показать, что есть всего 35 = 243 слова из 5 букв -
очевидно, что последнее, 243-е слово – это УУУУУ -
далее идём назад: предпоследнее слово УУУУО (242-е), затем идет УУУУА (241-е) и, наконец, УУУОУ (240-е) -
Ответ: УУУОУ.
-
Возможные ловушки и проблемы:-
хорошо, что требовалось найти слово, которое стоит близко к концу списка; если бы было нужно, скажем, 123-е слово, работы было бы значительно больше
-
Решение (2 способ, троичная система, идея М. Густокашина):
-
по условию задачи важно только то, что используется набор из трех разных символов, для которых задан порядок (алфавитный); поэтому для вычислений можно использовать три любые символа, например, цифры 0, 1 и 2 (для них порядок очевиден – по возрастанию) -
выпишем начало списка, заменив буквы на цифры:
1. 00000
2. 00001
3. 00002
4. 00010
……
-
это напоминает (в самом деле, так оно и есть!) числа, записанные в троичной системе счисления в порядке возрастания: на первом месте стоит число 0, на втором – 1 и т.д. -
тогда легко понять, что 240-м месте стоит число 239, записанное в троичной системе счисления -
переведем 239 в троичную систему: 239 = 222123 -
заменяем обратно цифры на буквы: 22212 УУУОУ -
Ответ: УУУОУ.
-
Возможные ловушки и проблемы:-
нужно помнить, что нумерация в задаче начинается с 1, а числа в троичной системе – с нуля, поэтому для получения 240-го элемента списка нужно переводить в троичную систему число 240-1 = 239.
-
Решение (3 способ, закономерности в чередовании букв, И.Б. Курбанова):
-
подсчитаем, сколько всего 5-буквенных слов можно составить из трех букв:
1 | А | А | А | А | А |
2 | А | А | А | А | О |
3 | А | А | А | А | У |
4 | А | А | А | О | А |
… | … | … | … | … | … |
... | | | | | |
… | | | | | |
240 | У | У | У | О | У |
241 | У | У | У | У | А |
242 | У | У | У | У | О |
243 | У | У | У | У | У |
-
так как слова стоят в алфавитном порядке, то первая треть (81 шт) начинаются с «А», вторая треть (тоже 81) – с «О», а последняя треть – с «У», то есть первая буква меняется через 81 слово -
аналогично:
-
2-я буква меняется через 81/3 = 27 слов; -
3-я буква – через 27/3 = 9 слов; -
4-я буква – через 9/3 = 3 слова и -
5-я буква меняется в каждой строке.
-
из этой закономерности ясно, что
-
на первой позиции в искомом слове будет буква «У» (последние 81 букв); -
на второй – тоже буква «У» (последние 27 букв); -
на третьей – тоже буква «У» (последние 9 букв); -
на четвертой – буква «О» (т.к. последние три буквы «У», а перед ними 3 буквы «О»)% -
на пятой – буква «У» (т.к. последние 3 буквы чередуются «А», «О», «У», а перед ними такая же последовательность).
-
Ответ: УУУОУ.
Решение (с помощью программы, А.Н. Носкин):
-
на компьютерном ЕГЭ можно использовать программу (язык Python):
a = ["А", "О", "У"] # буквы А, О, У в алфавитном порядке
s = "" # строка для формирования ответа
x = 239 # числовой код слова: 240-1 = 239
while x > 0: # перевод в троичную систему счисления
s += str(x%3)
x //= 3
s = s[::-1] # реверс строки ответа
for x in s: # формирование СЛОВА
i = int(x)
print( a[i], end="" )
-
Ответ: УУУОУ.
Решение (с помощью программы, С.С. Поляков):
-
программа на языке Python использует модуль itertools:
from itertools import product
print( *list(product('АОУ',repeat=5))[240-1] )
-
Ответ: УУУОУ.
Решение (с помощью программы, Б.С. Михлин):
-
можно использовать «метод грубой силы» – перебор всех вариантов:
from sys import exit
n=0
s='аоу'
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
n+=1
if n==240:
print(a+b+c+d+e)
exit() # выход из Python
-
Ответ: УУУОУ.
Еще пример задания (автор – В.В. Путилов):
Р-01. Все 5-буквенные слова, составленные из 5 букв А, К, Л, О, Ш, записаны в алфавитном порядке.
Вот начало списка:
1. ААААА
2. ААААК
3. ААААЛ
4. ААААО
5. ААААШ
6. АААКА
……
На каком месте от начала списка стоит слово ШКОЛА?
Решение:
-
по аналогии с предыдущим решением будем использовать пятеричную систему счисления с заменой А 0, К 1, Л 2, О 3 и Ш 4 -
слово ШКОЛА запишется в новом коде так: 413205 -
переводим это число в десятичную систему:
413205 = 454 + 153 + 352 + 251 = 2710
-
поскольку нумерация элементов списка начинается с 1, а числа в пятеричной системе – с нуля, к полученному результату нужно прибавить 1, тогда… -
Ответ: 2711.
-
Возможные ловушки и проблемы:-
нужно помнить, что список в задании начинается с 1, а числа в троичной системе – с нуля, поэтому для получения N-ой по счёту цепочки нужно переводить в троичную систему число N-1.
-
Решение (с помощью программы, С.С. Поляков):
-
программа на языке Python использует модуль itertools:
from itertools import product
s = list(map(lambda x: ''.join(x), product('АКЛОШ',repeat=5)))
print(s.index('ШКОЛА')+1)
-
Ответ: 2711.
Решение (с помощью программы, Б.С. Михлин):
-
можно использовать «метод грубой силы» – перебор всех вариантов:
from sys import exit
n=0
s='аклош'
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
n+=1
print(n,a+b+c+d+e) # отладочная
if a+b+c+d+e=='школа':
print(n)
exit() # выход из Python
-
Ответ: 2711.
Еще пример задания:
Р-00. Все 5-буквенные слова, составленные из букв А, О, У, записаны в обратном алфавитном порядке. Вот начало списка:
1. УУУУУ
2. УУУУО
3. УУУУА
4. УУУОУ
……
Запишите слово, которое стоит на 240-м месте от начала списка.
Решение (2 способ, троичная система, идея М. Густокашина):
-
по условию задачи важно только то, что используется набор из трех разных символов, для которых задан порядок (алфавитный); поэтому для вычислений можно использовать три любые символа, например, цифры 0, 1 и 2 (для них порядок очевиден – по возрастанию) -
выпишем начало списка, заменив буквы на цифры так, чтобы порядок символов был обратный алфавитный (У → 0, О → 1, А → 2):
1. 00000
2. 00001
3. 00002
4. 00010
……
-
это напоминает (в самом деле, так оно и есть!) числа, записанные в троичной системе счисления в порядке возрастания: на первом месте стоит число 0, на втором – 1 и т.д. -
тогда легко понять, что 240-м месте стоит число 239, записанное в троичной системе счисления -
переведем 239 в троичную систему: 239 = 222123 -
заменяем обратно цифры на буквы, учитывая обратный алфавитный порядок (0 → У, 1 → О, 2 → А): 22212 АААОА -
Ответ: АААОА.
Решение (с помощью программы, С.С. Поляков):
-
программа на языке Python использует модуль itertools:
from itertools import product
print( *list(product('УОА',repeat=5))[240-1] )
-
Ответ: АААОА.
Решение (с помощью программы, Б.С. Михлин):
-
можно использовать «метод грубой силы» – перебор всех вариантов:
from sys import exit
n=0
s='уоа' # порядок символов, как в списке условия задачи
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
n+=1
if n==240:
print(a+b+c+d+e)
exit() # выход из Python
-
Ответ: АААОА.