Марат составляет шестибуквенные слова из букв А,И,К,Л,М,Ь. Комбинаторика. Решение на языке Phyton (ЕГЭ по информатике)

Задача. Марат составляет шестибуквенные слова из букв А,И,К,Л,М,Ь и записывает их в алфавитном порядке в список. Вот начало списка:

1 АААААА

2 АААААИ

3 АААААК

4 АААААЛ

5 АААААМ

6 АААААЬ

7 ААААИА...

Найдите номер первого слова в списке, начинающегося на К и заканчивающегося на Ь, причём каждая буква встречается всего лишь раз, а разница между номерами этого слова и его перевёртыша составляет 26655. В ответе укажите сумму цифр этого номера.(Пример перевёртыша: питон-нотип)

Как будем решать задачу

  • Закодируем буквы цифрами: А=0, И=1, К=2, Л=3, М=4, Ь=5. Тогда каждое слово можно представить в виде числа в 6-ой системе счисления.
  • Получим все возможные числа за счет перестановок цифр 0, 1, 3, 4 (число должно начинаться с цифры 2 и заканчиваться цифрой 5.), переменная s.
  • Переведем полученную строку s из 6-ой системы счисления в десятичную, переменная n. 
  • Получим число r на заданном расстоянии 26655.
  • Выполним перевод полученного числа r в 6-ю систему счисления, переменная r6.
  • Сравним строки s и r6, являются ли они перевертышами друг друга, выведем номер слова n+1 (номер числа больше самого числа на 1) и подсчитаем сумму его цифр.
Программа на языке Phyton

from itertools import *

# А=0, И=1, К=2, Л=3, М=4, Ь=5

for x in permutations('0134',4):

    s = '2'+''.join(x)+'5'

    n = int(s,6)

    r = n + 26655

    r6 = ''

    while r!=0:

        d = r % 6

        r6 = str(d) + r6

        r = r // 6

    if s[::-1] == r6:

        print('номер слова:',n+1,'сумма цифр:',sum(list(map(int,list(str(n+1))))))

Результат запуска программы

номер слова: 16476 сумма цифр: 24

номер слова: 17526 сумма цифр: 21

Ответ: 24

Программа "покороче"

from itertools import *

for x in permutations('0134',4):

    s = ''.join(x)

    n = int('2'+s+'5',6)

    r = int('5'+s[::-1]+'2',6)

    if r-n==26655:

        print(n+1, sum(list(map(int,list(str(n+1))))))


Другие задачи ege8, комбинаторика (программы решений на языке Паскаль)

  1. Валя составляет шестибуквенные слова из букв слова ГРОЗА. Сколько слов составит Валя, если на первом месте нельзя использовать букву З, на последнее место нельзя ставить гласные буквы, а буква Г должна встретиться в слове не более 1 раза?
  2. Петя составляет шестибуквенные слова перестановкой букв слова АВРОРА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?
  3. Алексей составляет 5-буквенные слова из букв М, А, Г, И, С, Т, Р. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Алексей?
  4. Лера составляет 5-буквенные слова из букв Л, О, Г, А, Р, И, Ф, М, причём никакие две гласные или две согласные не должны стоять рядом. Буквы в слове не должны повторяться. Сколько слов может составить Лера?

Комментарии