Задание №8 ЕГЭ по информатике: подсчёт количества слов на Python
Светлана составляет коды из букв своего имени. Код должен состоять из 8 букв, и каждая буква в нём должна встречаться столько же раз, сколько в имени Светлана. Кроме того, одинаковые буквы в коде не должны стоять рядом. Сколько кодов может составить Светлана?
В имени Светлана восемь букв: С, В, Е, Т, Л, А, Н, А.
Обратите внимание: буква А встречается дважды, остальные — по одному разу.
Значит, в коде:
Длина кода — 8 букв. Всё сходится: 2 + 6 = 8.
Для кода из 8 букв нужно 8 вложенных циклов. Выглядит громоздко, но работает.
s = "СВЕТЛАН"
c = 0
for x1 in s:
for x2 in s:
for x3 in s:
for x4 in s:
for x5 in s:
for x6 in s:
for x7 in s:
for x8 in s:
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8
if (x.count("С") == 1) and (x.count("В") == 1) and (x.count("Е") == 1) and (x.count("Т") == 1) and (x.count("Л") == 1) and (x.count("А") == 2) and (x.count("Н") == 1) and (x.count("АА") == 0):
c += 1
print(c) s = "СВЕТЛАН" if (x.count("С") == 1) and (x.count("В") == 1) and ... and (x.count("А") == 2) and (x.count("АА") == 0):
c += 1 Восемь вложенных циклов — это неудобно. Гораздо короче то же самое записать через product.
from itertools import product
letters = "СВЕТЛАН"
c = 0
for tup in product(letters, repeat=8):
x = ''.join(tup)
if (x.count("С") == 1 and
x.count("В") == 1 and
x.count("Е") == 1 and
x.count("Т") == 1 and
x.count("Л") == 1 and
x.count("А") == 2 and
x.count("Н") == 1 and
"АА" not in x):
c += 1
print(c) from itertools import product
letters = "СВЕТЛАН" x = ''.join(tup)
Главный минус — нужно не забыть ''.join(tup). Без него программа упадёт или выдаст неверный результат.
Я — Олег Алексеевич, репетитор по информатике. Готовлю к ЕГЭ более 15 лет.
На своих занятиях мы:
Хотите попробовать? Запишитесь на первое занятие — познакомимся, определим ваш уровень и составим план подготовки.
Переходите на мой сайт, чтобы узнать подробности и записаться: Репетиторы рядом