Все пятибуквенные слова, составленные из букв К, О, М, П, Ь, Т, Е, Р, записаны в алфавитном порядке и пронумерованы.
Вот начало списка:
1. ЕЕЕЕЕ
2. ЕЕЕЕК
3. ЕЕЕЕМ
4. ЕЕЕЕО
5. ЕЕЕЕП
6. ЕЕЕЕР
7. ЕЕЕЕТ
8. ЕЕЕЕЬ
...
Под каким номером в списке стоит последнее слово, которое не содержит
Приведём решение на языке Python.
from itertools import product
count = 0
sp = []
for s in product(sorted("КОМПЬТЕР"), repeat = 5):
count += 1
if s.count("К") == 0 and s.count("Р") == 2:
sp.append(count)
print(max(sp))
Ответ: 32750.
Приведём другое решение на языке Python.
alf = 'ЕКМОПРТЬ'
count = 0
otv = []
for x1 in alf:
for x2 in alf:
for x3 in alf:
for x4 in alf:
for x5 in alf:
s = x1+x2+x3+x4+x5
count += 1
if s.count('К') == 0 and s.count('Р') == 2:
otv.append(count)
print(max(otv))
Приведём решение Александра Козлова на языке Python.
Очевидно что мы имеем дело с восьмеричной системой счисления, следовательно, максимальное слово будет иметь вид ЬЬЬЬЬ или его код - 77777, но по условию необходимо иметь две буквы Р т. е. код – 55. Получаем максимальный код 77755, учитывая, что первая строка начинается с номера 1 а не с 0, увеличиваем код на 1, следовательно, получаем восьмеричное число 77756. Остается перевести данное число из восьмеричной системы счисления в десятичную, а сделать это можно несколькими способами, например так:
print("Otvet:",int('77756',8))
Приведём решение Павла Шостка на языке PascalABC.NET
##
'ЕКМОПРТЬ'.cartesian(5).Order.Numerate.where(\(n,s)->(s.countof('Р')=2) and ('К' not in s)).last.Print;
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'ЕКМОПРТЬ'.cartesian(5).Numerate
.where(\(n,s)->(s.countof('Р')=2) and ('К' not in s))
.last // (32750,ЬЬЬРР)
//.item1 // 32750
.Print;
end.

