Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задание 8 егэ информатика

Виктория Струкова Ученик (85), закрыт 2 месяца назад
s = 'ПРОБНИК'
c = 0
for n1 in s:
for n2 in s:
for n3 in s:
for n4 in s:
for n5 in s:
for n6 in s:
n = n1 + n2 + n3 + n4 + n5 + n6
c += 1
if n.count('О') == 3 and n.count('П') <= 1 and n.count('Р') <= 1 and n.count('Б') <= 1 and n.count('Н') <= 1 and n.count('И') <= 1 and n.count('К') <= 1:
print(c)
Все 6-буквенные слова, в составе которых могут быть только буквы П, Р, О, Б, Н, И, К, записаны в алфавитном порядке и пронумерованы.


Вот начало списка:


ББББББ
БББББИ
БББББК
БББББН
БББББО
БББББП
БББББР
ББББИБ

Под каким номером в списке идёт последнее слово с тремя буквами О (остальные буквы при этом не повторяются? у меня почему то не совпадает ответ, скажите что не так
Лучший ответ
ВАдим Тагиров Гуру (3137) 2 месяца назад
Тебе надо s = sorted('ПРОБНИК') сделать или сразу записать его как s = 'БИКНОПР'
Виктория СтруковаУченик (85) 2 месяца назад
спасибо большое
ВАдим Тагиров Гуру (3137) Виктория Струкова, Помогло?
Виктория СтруковаУченик (85) 2 месяца назад
ёще раз спасибо
Остальные ответы
Avis Оракул (92275) 2 месяца назад
Весь этот перебор вас никто не просил делать...
У вас алфавит состоит из 7 букв. Это система счисления с основанием 7, где каждой цифре соответствует буква в алфавитном порядке. Т.е. Б = 0, И = 1, К = 2 и т.д.
Последнее слово по заданному шаблону - это просто самое большое число, которое можно составить с учётом этих требований.

Раз оно самое большое, значит первая цифра - 6("Р"). Повторяться они не должны, значит вторая цифра может быть только следующая наибольшая - 5("П"). Следующая - 4("О"). И их должно быть три. Поскольку другие цифры меньше, значит наибольшим вариантом будет три 4-ки подряд (три "О" подряд). Ну и дальше без повторений может быть только самая большая оставшаяся цифра - 3("Н"). Итого получается число 654443 ("РПОООН").
Нумерация же идёт в десятичной системе, поэтому осталось только перевести это число из 7-чной в 10-ную, как вас совсем недавно и учили это делать:

Т.е. ответ: 114446. При условии, что счёт начинается с нуля. Если нумерация с единицы, то 114447.

Никакого кода не надо вовсе, а уж тем более перебора всех вариантов. Но если очень сильно надо, то можно выдать перевод в десятичную систему счисления нужного числа:
 print(int('654443',base=7)) 
или
 print(int('654443',base=7)+1) 
Похожие вопросы