ПОМОГИТЕ С ЗАДАЧЕЙ ИЗ 8 НОМЕРА ЕГЭ ПО ИНФОРМАТИКЕ!
Все 6-буквенные слова, в составе которых могут быть только буквы П, Р, О, Б, Н, И, К, записаны в алфавитном порядке и пронумерованы.
Вот начало списка:
ББББББ
БББББИ
БББББК
БББББН
БББББО
БББББП
БББББР
ББББИБ
...
Под каким номером в списке идёт последнее слово с тремя буквами О (остальные буквы при этом не повторяются)?
from itertools import *
k=0
for n in permutations(sorted(set('ПРОБНИК')),6):
a=''.join(n)
k+=1
if a=='PПНOOO':
print(k)
что не так?
У тебя шестизначное число в 7-ричной системе счисления:
Б - 0, И - 1, К - 2, Н - 3, О - 4, П - 5, Р - 6.
Максимальное число (последнее слово) в котором три цифры 4 (т.е. 'O') и остальные цифры не повторяются:
654443₇: не PПНOOO, а РПОООН
Номер слова на 1 больше значения числа.
ВЕСЬ код программы:
print(int('654443', 7) + 1)
Ошибка же твоего кода (кроме неправильного слова) в том, что перебор всех вариантов с повторами элементов делается иначе:
for n in product(*[sorted('ПРОБНИК')] * 6):