Все 5-буквенные слова, в составе которых могут быть только буквы К, Р, О, В, А, Т, Ь, записаны в алфавитном порядке и пронумерованы.
Вот начало списка:
1. ААААА
2. ААААВ
3. ААААК
4. ААААО
5. ААААР
6. ААААТ
...
Под каким номером в списке идёт последнее слово c нечётным номером, которое содержит не более одной буквы Т, две буквы В и не содержит букв Ь, стоящих рядом?
Приведём решение на языке Python.
from itertools import product
count = 0
m = []
for p in product(sorted("КРОВАТЬ"), repeat=5):
count += 1
s = ''.join(p)
if count%2 != 0 and ("ЬЬ" not in s) and s.count("В") == 2 and s.count("Т") <= 1:
m.append(count)
print(max(m))
Ответ: 16277.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'К, Р, О, В, А, Т, Ь, '.remove(', ')
.Sorted.JoinToString
.Cartesian(5).Numerate
.Where(\(n,s)-> (n mod 2 = 1)) // c нечётным номером
.Where(\(n,s)-> s.CountOf('Т') <= 1) // не более одной буквы Т
.Where(\(n,s)-> s.CountOf('В') = 2) // две буквы В
.Where(\(n,s)-> not s.isMatch('[Ь][Ь]') ) // не содержит букв Ь, стоящих рядом
.Last // (16277,ЬТОВВ) // последнее слово
.Item1 // 16277 // номер искомого слова
.Print;
end.

