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

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

Ответ: УОУАУ

Условие

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

1. ААААА

2. ААААО

3. ААААУ

4. АААОА

……

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

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

  1. Список всех слов одинаковой длины в алфавитном порядке — это, по сути, последовательная запись чисел фиксированной длины в системе счисления с основанием, равным числу различных букв в условии.
  2. Замени буквы цифрами в порядке их следования в алфавите, тогда номеру слова соответствует число: из номера нужно вычесть единицу, ведь самое первое слово списка кодируется нулями.
  3. Переведи полученное число в систему счисления по числу букв делением с остатками, при необходимости дополни запись нулями слева до нужной длины и вернись от цифр к буквам; для проверки переведи результат обратно и убедись, что номер совпадает.

Решение

Заменим буквы А, О, У на 0, 1, 2 (для них порядок очевиден — по возрастанию).

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

1. 00000

2. 00001

3. 00002

4. 00010

...

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

209 / 3 = 69 (2)

69 / 3 = 23 (0)

23 / 3 = 7 (2)

7 / 3 = 2 (1)

2 / 3 = 0(2)

В троичной системе 209 запишется как 21202. Произведём обратную замену и получим УОУАУ.

Ответ: УОУАУ.

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

a = {0: "А", 1: "О", 2: "У"}

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 == 210:

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

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

from itertools import product

words = list(product('АОУ', repeat=5))

print(*words[209])

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

ss = ['А', 'О', 'У']

s = ''

x = 210 - 1

while x:

s = ss[(x%3)] + s

x //= 3

print(s)

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

i = 0

for i1 in 'АОУ':

for i2 in 'АОУ':

for i3 in 'АОУ':

for i4 in 'АОУ':

for i5 in 'АОУ':

i += 1

if i == 210:

print(i1+i2+i3+i4+i5)

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

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

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