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

Все семибуквенные слова, в составе которых могут быть только русские буквы Б, Д, Ж, И, О, П, Ф записаны в алфавитном порядке и пронумерованы начиная с 1. Ниже приведено начало списка.

  1. БББББББ
  2. ББББББД
  3. ББББББЖ
  4. ББББББИ
  5. ББББББО
  6. ББББББП
  7. ББББББФ
  8. БББББДБ

Под каким номером в списке идёт первое слово, которое содержит не более одной буквы Б, ровно две буквы Ф, не содержит ни одной буквы Д и Ж?

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

Присвоим буквам числовое значение в зависимости от алфавитного порядка. Буквы получат такие значения: Б = 0; Д = 1; Ж = 2; И = 3; О = 4; П = 5; Ф = 6.

Первое слово, которое будет удовлетворять условию выглядит так: БИИИФФ. В числовом представлении это будет выглядеть таким образом: 0333366.

Как можем заметить, наш алфавит записан в 7-ричной системе счисления.Данное значение нам нужно перевести в десятичную систему счисления. Значение будет равняться 58848.

Нужно увеличить данное значение на единицу, поскольку отсчёт в задаче начинается с 1. Ответ: 58849.

Решение через циклы

a = ’БДЖИОПФ’
c = 0
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    for x6 in a:
                        for x7 in a:
                            s = x1+x2+x3+x4+x5+x6+x7
                            c += 1
                            if s.count(’Б’) <= 1 and s.count(’Ф’) == 2 and s.count(’Д’) == 0 and s.count(’Ж’) == 0:
                                print(c)

Решение через itertools

from itertools import product

c = 0
for x in product(’БДЖИОПФ’, repeat=7):
    word = ’’.join(x)
    c += 1
    if word.count(’Б’) <= 1 and word.count(’Ф’) == 2 and word.count(’Д’) == 0 and word.count(’Ж’) == 0:
        print(c)
        break

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