πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №8 → Задание i08-03

Задание №8 ЕГЭ Информатика с ответом и решением

Ответ: ЛРННН

Условие

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

1. ЛЛЛЛЛ

2. ЛЛЛЛН

3. ЛЛЛЛР

4. ЛЛЛЛТ

5. ЛЛЛНЛ

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

Подсказки — как подойти к решению

  1. Упорядоченный по алфавиту список слов одинаковой длины удобно превратить в последовательность чисел, если заменить буквы цифрами по их алфавитному порядку.
  2. Основание системы счисления здесь равно числу различных букв в условии, а номер слова и его числовой код различаются на единицу, потому что первое слово кодируется нулями.
  3. Переведи код в нужную систему счисления, приведи запись к длине слова, дописав нули слева (незначащий нуль впереди число не меняет), и выполни обратную замену цифр на буквы; проверь себя повторным переводом.

Решение

Заменим буквы Л, Н, Р, Т на 0, 1, 2, 3 соответственно.

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

1. 00000

2. 00001

3. 00002

4. 00003

5. 00010

...

Полученная запись есть числа, записанные в четверичной системе счисления в порядке возрастания. Тогда на 150-⁠м месте будет стоять число 149 (так как первое число — 0). Переведём число 149 в четверичную систему:

149 / 4 = 37 (1)

37 / 4 = 9 (1)

9 / 4 = 2 (1)

2 / 4 = 0 (2)

В четверичной системе 149 запишется как 2111. Поскольку слова 5-⁠буквенные, добавим в начале числа незначащий нуль, получим 02111. Произведём обратную замену и получим ЛРННН.

Ответ: ЛРННН.

Приведём другое решение на языке Python.

a = {0: "Л", 1: "Н", 2: "Р", 3: "Т"}

k = 0

for i in range(0, len(a)):

for j in range(0, len(a)):

for g in range(0, len(a)):

for m in range(0, len(a)):

for n in range(0, len(a)):

k += 1

if k == 150:

print(a[i], a[j], a[g], a[m], a[n], end=" ")

Приведём решение Владимира Артамонова на языке Python.

from itertools import product

words = list(product('ЛНРТ', repeat=5))

print(*words[149])

Приведём решение Юрия Красильникова на языке Python.

from itertools import product

print([''.join(p) for p in product('ЛНРТ', repeat=5)][150-1])

Приведём решение Сергея Донец на языке PascalABC.NET.

begin

'Л, Н, Р, Т, '.Remove(', ')

.Sorted.Cartesian(5).Numerate

.Where(\(n,s)->n=150)

.First.Item2.Print;

end.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №8 по информатике