Задача к ЕГЭ по информатике на тему «слова в алфавитном порядке» №3

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

1. ЛЛЛЛЛ

2. ЛЛЛЛО

3. ЛЛЛЛС

4. ЛЛЛЛЬ

5. ЛЛЛОЛ

…..

Укажите количество слов, которые стоят между словами ОЛЬСЬ и СОЬЬЛ(включая эти слова).

Решение руками:

Заменим буквы на цифры: Л — 0, О — 1, С — 2, Ь — 3.

Теперь запишем 5-буквенные слова в новом алфавите.

1. 00000

2. 00001

3. 00002

4. 00003

5. 00010

…..

Полученный ряд — числа в четверичной системе счисления, записанные по возрастанию. Тогда слово СОЬЬЛ в числовом алфавите будет иметь вид 213304  , а слово ОЛЬСЬ− 103234  .

Переведем полученные значения в десятичную систему счисления:

213304 = 63610

103234 = 31510

Тогда получится, что между словами СОЬЬЛ и ОЛЬСЬ находится 636 − 315+ 1 = 322  слов (+1, так как учитываются оба этих слова).

Решение Python:

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)

Решение Python:

from itertools import *
c = 0
res1 = 0
res2 = 0
for i in product(’ЛОСЬ’, repeat = 5):
    s = ’’.join(i)
    c += 1
    if s == ’ОЛЬСЬ’:
        res1 = c
    if s == ’СОЬЬЛ’:
        res2 = c
print(abs(res2 - res1) + 1)

Ответ: 322
Оцените статью
Я решу все!