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

Все 4-буквенные слова, в составе которых могут быть буквы Б, А, К, Р, записаны в определённом порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

1. ББББ

2. БББА

3. БББК

4. БББР

5. ББАБ

...

Сколько слов между словами “КРАБ” и “БРАК”?

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

Исходя из порядка букв в списке, присвоим им следующие коды: Б — 0, А — 1, К — 2, Р — 3. Тогда первое слово — 0000, второе — 0001 и т.д. Слово “КРАБ” будет кодироваться как 2310, а слово “БРАК”  будет кодироваться как 0312. Т.к. для кодирования слов потребовалось всего 4 разные буквы, то коды будут представлены в четверичной системе счисления. Вычтем код слова “БРАК”  из кода слова “КРАБ”  и получим следующее:

   23104 −   312 --------4--    13324

Разница номеров слов составляет 13324 = 12610,  а значит между ними ровно 125 слов (т.к. при вычитании номеров мы учитываем на одно слово больше).

Решение Python:

from itertools import *
t = product(’БАКР’, repeat = 4)
c, res1, res2 = 0, 0, 0
for i in t:
    s = ’’.join(i)
    c += 1
    if s == ’КРАБ’:
        res1 = c
    if s == ’БРАК’:
        res2 = c
print(abs(res2-res1)-1)

Решение Python:

alf = ’БАКР’
c = 0
res1, res2 = 0, 0
for i in alf:
    for j in alf:
        for k in alf:
            for l in alf:
                s = i + j + k + l
                c += 1
                if s == ’КРАБ’:
                    res1 = c
                if s == ’БРАК’:
                    res2 = c
print(abs(res2-res1)-1)

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