Форум » Кодирование и декодирование информации » Задание 8 (№4245) » Ответить

Задание 8 (№4245)

Viacheslav: (№ 4245) (А. Куканова) Света составляет 6-буквенные слова из букв С, О, Л, Н, Ц, Е, причём буква О встречается в слове не более 2 раз, а буква Ц — ровно 1 раз. Буквы могут повторяться. Сколько таких слов может составить Света? Можно ли решить данное задание вручную(не программированием)? Долго пытался решить вручную, не получилось( Может есть какая-нибудь формула? Помогите пожалуйста(((

Ответов - 6

Поляков: Viacheslav пишет: Можно ли решить данное задание вручную(не программированием)? Можно. Но это значительно сложнее, чем программой. Поскольку буква Ц встречается ровно 1 раз, она может стоять на одной из 6 позиций. Поэтому нужно найти количество пятибуквенных слов, в которых буква О встречается 0, 1 и 2 раза и полученный результат умножить на 6.

ЕгорКуренеов: Я не знаю, почему в ответе получается странное число 17664, но у меня в ответе получилось 720. Решал кодом. k = 0 for x1 in 'СОЛНЦЕ': for x2 in 'СОЛНЦЕ': for x3 in 'СОЛНЦЕ': for x4 in 'СОЛНЦЕ': for x5 in 'СОЛНЦЕ': for x6 in 'СОЛНЦЕ': s = x1 + x2 + x3 + x4 + x5 + x6 if s.count(x1) == 1 and s.count(x2) == 1 and s.count(x3) == 1 and s.count(x4) == 1 and s.count( x5) == 1 and s.count(x6) == 1: if s.count('Ц') == 1 and s.count('О') <= 2: k += 1 print(k) Врать не буду, нашел код в интернете, получалось решать несколько таких задач этим кодом, но тут не знаю..

s11kai: ЕгорКуренеов пишет: Я не знаю, почему в ответе получается странное число 17664, но у меня в ответе получилось 720. Решал кодом. если твой код немного подправить, например так как ниже, то получится тот самый странный ответ 17664 - кстати, он и есть правильный [pre2] k = 0 for x1 in 'СОЛНЦЕ': for x2 in 'СОЛНЦЕ': for x3 in 'СОЛНЦЕ': for x4 in 'СОЛНЦЕ': for x5 in 'СОЛНЦЕ': for x6 in 'СОЛНЦЕ': s = x1 + x2 + x3 + x4 + x5 + x6 if s.count('Ц') == 1 and s.count('О') <= 2: k += 1 print(k) [/pre2]


s11kai: В архиве 8solve под именем 8-216.ru нашел такой файл: [pre2] from itertools import product words = [w for w in product("СОЛНЦЕ",repeat=2) if w.count('О') <= 2 and w.count('Ц') == 1] print( len(words) ) [/pre2] выдает точно очень странный ответ - 10

s11kai: s11kai пишет: from itertools import product words = [w for w in product("СОЛНЦЕ",repeat=2) if w.count('О') <= 2 and w.count('Ц') == 1] print( len(words) ) Но стоит заменить 2 на 6 и этот странный код выдаст правильный результат [pre2] from itertools import product words = [w for w in product("СОЛНЦЕ",repeat=6) if w.count('О') <= 2 and w.count('Ц') == 1] print( len(words) ) [/pre2]

s11kai: А можно и так: [pre2] from itertools import * s = 'СОЛНЦЕ' k = 0 for i in product(s, repeat=6): s = ''.join(i) if s.count('О') <= 2 and s.count('Ц') == 1: k += 1 print(k) [/pre2] И понятно и не длинно!



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