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

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

1. ТТТТ

2. ТТТО

3. ТТТС

4. ТТТП

5. ТТОТ

...

Сколько слов между словами “СТОП” и “ПОСТ”?

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

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

   31204 −  2013 --------4--    11014

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

Решение 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)

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