Файл: Кодирование данных, комбинаторика, системы счисления.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 381

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Ещё пример задания:


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

Вот начало списка:

1. ААААА

2. ААААО

3. ААААУ

4. АААОА

……

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

Решение (1 способ, перебор с конца):

  1. подсчитаем, сколько всего 5-буквенных слов можно составить из трех букв;

  2. очевидно, что есть всего 3 однобуквенных слова (А, О, У); двух буквенных слов уже 33=9 (АА, АО, АУ, ОА, ОО, ОУ, УА, УО и УУ)

  3. аналогично можно показать, что есть всего 35 = 243 слова из 5 букв

  4. очевидно, что последнее, 243-е слово – это УУУУУ

  5. далее идём назад: предпоследнее слово УУУУО (242-е), затем идет УУУУА (241-е) и, наконец, УУУОУ (240-е)

  6. Ответ: УУУОУ.

Возможные ловушки и проблемы:

  • хорошо, что требовалось найти слово, которое стоит близко к концу списка; если бы было нужно, скажем, 123-е слово, работы было бы значительно больше

Решение (2 способ, троичная система, идея М. Густокашина):

  1. по условию задачи важно только то, что используется набор из трех разных символов, для которых задан порядок (алфавитный); поэтому для вычислений можно использовать три любые символа, например, цифры 0, 1 и 2 (для них порядок очевиден – по возрастанию)

  2. выпишем начало списка, заменив буквы на цифры:

1. 00000

2. 00001

3. 00002

4. 00010

……

  1. это напоминает (в самом деле, так оно и есть!) числа, записанные в троичной системе счисления в порядке возрастания: на первом месте стоит число 0, на втором – 1 и т.д.

  2. тогда легко понять, что 240-м месте стоит число 239, записанное в троичной системе счисления

  3. переведем 239 в троичную систему: 239 = 222123

  4. заменяем обратно цифры на буквы: 22212  УУУОУ

  5. Ответ: УУУОУ.


Возможные ловушки и проблемы:

  • нужно помнить, что нумерация в задаче начинается с 1, а числа в троичной системе – с нуля, поэтому для получения 240-го элемента списка нужно переводить в троичную систему число 240-1 = 239.

Решение (3 способ, закономерности в чередовании букв, И.Б. Курбанова):

  1. подсчитаем, сколько всего 5-буквенных слов можно составить из трех букв:


1

А

А

А

А

А

2

А

А

А

А

О

3

А

А

А

А

У

4

А

А

А

О

А













...

































240

У

У

У

О

У

241

У

У

У

У

А

242

У

У

У

У

О

243

У

У

У

У

У
35 = 243 слова; 240-ое место – четвертое с конца;

  1. так как слова стоят в алфавитном порядке, то первая треть (81 шт) начинаются с «А», вторая треть (тоже 81) – с «О», а последняя треть – с «У», то есть первая буква меняется через 81 слово

  2. аналогично:


  • 2-я буква меняется через 81/3 = 27 слов;

  • 3-я буква – через 27/3 = 9 слов;

  • 4-я буква – через 9/3 = 3 слова и

  • 5-я буква меняется в каждой строке.

  1. из этой закономерности ясно, что

  • на первой позиции в искомом слове будет буква «У» (последние 81 букв);

  • на второй – тоже буква «У» (последние 27 букв);

  • на третьей – тоже буква «У» (последние 9 букв);

  • на четвертой – буква «О» (т.к. последние три буквы «У», а перед ними 3 буквы «О»)%

  • на пятой – буква «У» (т.к. последние 3 буквы чередуются «А», «О», «У», а перед ними такая же последовательность).

  1. Ответ: УУУОУ.

Решение (с помощью программы, А.Н. Носкин):

  1. на компьютерном ЕГЭ можно использовать программу (язык 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="" )

  1. Ответ: УУУОУ.

Решение (с помощью программы, С.С. Поляков):

  1. программа на языке Python использует модуль itertools:

from itertools import product

print( *list(product('АОУ',repeat=5))[240-1] )

  1. Ответ: УУУОУ.

Решение (с помощью программы, Б.С. Михлин):

  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

  1. Ответ: УУУОУ.

Еще пример задания (автор – В.В. Путилов):


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

Вот начало списка:

1. ААААА

2. ААААК

3. ААААЛ

4. ААААО

5. ААААШ

6. АААКА

……

На каком месте от начала списка стоит слово ШКОЛА?

Решение:

  1. по аналогии с предыдущим решением будем использовать пятеричную систему счисления с заменой А  0, К  1, Л  2, О  3 и Ш  4

  2. слово ШКОЛА запишется в новом коде так: 413205

  3. переводим это число в десятичную систему:

413205 = 454 + 153 + 352 + 251 = 2710

  1. поскольку нумерация элементов списка начинается с 1, а числа в пятеричной системе – с нуля, к полученному результату нужно прибавить 1, тогда…

  2. Ответ: 2711.

Возможные ловушки и проблемы:

  • нужно помнить, что список в задании начинается с 1, а числа в троичной системе – с нуля, поэтому для получения N-ой по счёту цепочки нужно переводить в троичную систему число N-1.

Решение (с помощью программы, С.С. Поляков):

  1. программа на языке Python использует модуль itertools:

from itertools import product

s = list(map(lambda x: ''.join(x), product('АКЛОШ',repeat=5)))

print(s.index('ШКОЛА')+1)

  1. Ответ: 2711.

Решение (с помощью программы, Б.С. Михлин):

  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

print(n,a+b+c+d+e) # отладочная

if a+b+c+d+e=='школа':

print(n)

exit() # выход из Python

  1. Ответ: 2711.

Еще пример задания:


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

1. УУУУУ

2. УУУУО

3. УУУУА


4. УУУОУ

……

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

Решение (2 способ, троичная система, идея М. Густокашина):

  1. по условию задачи важно только то, что используется набор из трех разных символов, для которых задан порядок (алфавитный); поэтому для вычислений можно использовать три любые символа, например, цифры 0, 1 и 2 (для них порядок очевиден – по возрастанию)

  2. выпишем начало списка, заменив буквы на цифры так, чтобы порядок символов был обратный алфавитный (У → 0, О → 1, А → 2):

1. 00000

2. 00001

3. 00002

4. 00010

……

  1. это напоминает (в самом деле, так оно и есть!) числа, записанные в троичной системе счисления в порядке возрастания: на первом месте стоит число 0, на втором – 1 и т.д.

  2. тогда легко понять, что 240-м месте стоит число 239, записанное в троичной системе счисления

  3. переведем 239 в троичную систему: 239 = 222123

  4. заменяем обратно цифры на буквы, учитывая обратный алфавитный порядок (0 → У, 1 → О, 2 → А): 22212  АААОА

  5. Ответ: АААОА.

Решение (с помощью программы, С.С. Поляков):

  1. программа на языке Python использует модуль itertools:

from itertools import product

print( *list(product('УОА',repeat=5))[240-1] )

  1. Ответ: АААОА.

Решение (с помощью программы, Б.С. Михлин):

  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

  1. Ответ: АААОА.