Марат составляет шестибуквенные слова из букв А,И,К,Л,М,Ь. Комбинаторика. Решение на языке 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) и подсчитаем сумму его цифр.
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 раза?
- Петя составляет шестибуквенные слова перестановкой букв слова АВРОРА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?
- Алексей составляет 5-буквенные слова из букв М, А, Г, И, С, Т, Р. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Алексей?
- Лера составляет 5-буквенные слова из букв Л, О, Г, А, Р, И, Ф, М, причём никакие две гласные или две согласные не должны стоять рядом. Буквы в слове не должны повторяться. Сколько слов может составить Лера?
Комментарии