РЕШЕНИЕ 8 НОМЕРОВ (4/4)
Условие задачи
Все пятибуквенные слова, составленные из букв С, Т, Р, О, К, А, записаны в алфавитном порядке и пронумерованы. Вот начало списка:
1. ААААА
2. ААААК
3. ААААО
4. ААААР
5. ААААС
6. ААААТ
Определите, под каким номером стоит последнее слово с чётным номером, которое не начинается с букв А, С или Т и содержит ровно две буквы О.
Разбор условия
1. Алфавитный порядок: Слова записаны по алфавиту. Чтобы product генерировал их в таком же порядке, подаём буквы отсортированными: sorted('СТРОКА') → ['А','К','О','Р','С','Т']. Номер слова считаем через счётчик k.
2. Чётный номер: k % 2 == 0 — проверка чётности номера.
3. Не начинается с А, С, Т: word[0] not in 'АСТ' — значит начинается с К, О или Р.
4. Ровно две О: word.count('О') == 2
Ищем последнее слово: не используем break! При каждом совпадении перезаписываем last = k. Когда цикл закончится — в last будет номер последнего подходящего.
Решение через вложенные циклы
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Решение через itertools.product
1 2 3 4 5 6 7 8 9 10
Важное замечание
sorted() обязателен: если буквы не отсортировать, слова будут не в алфавитном порядке и номера не совпадут с условием.
Если просят последнее — перезаписываем переменную (без break). Если первое — ставим break. Если количество — считаем cnt += 1.
Ответ: 5058
