Форум » Кодирование и декодирование информации » задача 10-116 » Ответить

задача 10-116

s3rg3y: Добрый день! Не сходится ответ в задаче 10-116: Петя составляет шестибуквенные слова перестановкой букв слова АДЖИКА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя? Мои рассуждения: 1. Всего перестановок букв АДЖИКА P6(1,1,1,1,2)=6!/2=360 2. Нужно исключить слова с двумя А подряд, т. е. пятибуквенные перестановки ХДЖИК, их 5!=120. При этом две А внутри Х это еще два варианта - удваиваем, получилось 240. 3. 360-240=120. В ответе 240. Где я ошибаюсь? Спасибо!

Ответов - 5

cabanov.alexey: А А _ _ _ _ - 24 слова _ А А _ _ _ - 24 слова _ _ А А _ _ - 24 слова _ _ _ А А _ - 24 слова _ _ _ _ А А - 24 слова Итого 120 слов. "При этом две А внутри Х это еще два варианта" - АА записывается единственным образом.

s3rg3y: Спасибо

SantaMuerte: A*A*** A**A** A***A* A****A *A*A** *A**A* *A***A **A*A* **A**A ***A*A В звездочи мы можем вставить ДЖИК, используя по одному разу: А 4 А 321=24 А 43 А 21=24 А 432 А 1=24 А 4321 А=24 --------------- и так заполнить все варианты ---------------- 423 А 1 А=24 Остается сложить их. 24*10 = 240


Salim: s = 'АДЖИКА' # Создаём множество, чтобы не учитывались повторы слов cnt = set() for i in s: for j in s: for k in s: for l in s: for m in s: for n in s: st = i + j + k + l + m + n # Проверяем количество букв if st.count('А') == 2 and st.count('Д') == 1 and st.count('И') == 1 and st.count('Ж') == 1 and st.count('К') == 1: # Так как по две у нас только буквы АА, то проверяем только комбинации с ними if 'АА' not in st: cnt.add(st) print(len(cnt)) #Кому надо Python вот пожалуйста!

Ж: укороченная версия: [pre2] from itertools import * cnt = set() for slovo in permutations('АДЖИКА', 6): st=''.join(slovo) if all(c not in st for c in ['АА','ДД','ЖЖ','ИИ','КК']): cnt.add(st) print(len(cnt)) [/pre2]



полная версия страницы