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

Задание 8 № 2928

vishnja74: № 2928 Помогите решить. Определите количество семизначных чисел, записанных в семеричной системе счисления, учитывая, что числа не могут начинаться с цифр 3 и 5 и не должны содержать сочетания цифр 22 и 44 одновременно. Показать ответ 466456

Ответов - 17, стр: 1 2 All

MrAndrewson: На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

vishnja74: Вот спасибо, прямо помогли! Если бы на сайте был разбор похожей задачи, я бы не писала сюда, уверяю Вас. Мне нужна реальная помощь в решении. Я могу найти общее количество вариантов, без учёта условий с 22 и 44. Их 470596. Но как просчитать количество вариантов с учетом того, что не должно содержаться одновременно 22 и 44 не знаю, от слова совсем, поэтому прошу помощи. И мне не понятно, не должно быть именно 22, а 222 может быть?

Поляков: vishnja74 пишет: Если бы на сайте был разбор похожей задачи, я бы не писала сюда, уверяю Вас. Сделать разбор каждой задачи, которая может встретиться, достаточно трудно. Приводите свое решение и будем разбираться, что у вас не получается. Самый простой общий подход - перебираем все числа, для каждого проверяем выполнение указанного условия, если выполняется - увеличиваем счетчик. И мне не понятно, не должно быть именно 22, а 222 может быть? Если нет 22, то не будет и 222.


lazarefav: Здравствуйте, Константин Юрьевич. Решала эту задачу , рассмотренную выше, способом - от всего количества вариантов вычитая не подходящие, а неподходящие-перебором вариантов вручную, исключала варианты 22, 44, 222, 444. Ответ получается 466432. Но это не верный ответ. не пойму в чен ошибка...

Поляков: lazarefav пишет: Ответ получается 466432. Но это не верный ответ. не пойму в чен ошибка... Сложно сказать. Покажите, пожалуйста, решение.

lazarefav: https://i.postimg.cc/FHP3T12g/viber-2022-03-17-17-55-03-785.jpg

Поляков: В семеричной системе нет цифры 7. Вот программное решение: [pre2] from itertools import product A = '0123456' s = ["".join(x) for x in product(A,repeat=7) if x[0] not in '035'] print(len( [x for x in s if not('22' in x and '44' in x)] )) [/pre2]

Татьяна Иосифовна: {8-229 ответ 466456} uses school; begin {writeln(dec('1000000',7));}{117649} { writeln(dec('6666666',7));}{823542} var k:=0; for var i:=117649 to 823542 do begin var s:=toBase(inttostr(i),7); var p2:=0;var p4:=0; for var j:=1 to 6 do begin if s[j]+s[j+1]='22' then p2:=1; if s[j]+s[j+1]='44' then p4:=1; end; if (s[1]<>'3')and(s[1]<>'5')and not((p2=1)and(p4=1))then inc(k); end; writeln(k); end.

Лилия: Здравствуйте, Константин Юрьевич!!! Программой у меня получился правильный ответ, а ручной вариант решения почему-то выдаёт ответ не верный РЕШЕНИЕ: Общее количество слов 7-значных и семеричных: 4_7_7_7_7_7_7 - на первой позиции могут быть только четыре цифры -1246, а на остальных 6-ти позициях любая из 7-ми цифр 4*7**6= 470596 Дальше рассматриваем то, что нельзя, обозначим 22 как К, а 44 как М - К_М_7_7_7 - количество вариантов размещения К и М на 5 позициях 2*(5!/(2!*3!))=20 Тогда 20*7**3=6860 Находим разность 470596-6860=463736 Что-то видимо, в подсчётах с 22 и 44 неверно, а что, никак не пойму

MrAndrewson: 20 * 7 **3 - вы тут считаете без учета того, что на первом месте не может быть 0 3 и 5. Т.е. расчет 7 * 7 * 7 верен только если на первой позиции 2 или 4, для других вариантов расположения удвоенных цифр будет уже не так.

Лилия: точно!!!!

Лилия: всё равно не получилось..... если на первом месте 22 или 44 - это 8 вариантов (7**3)*8 2744 если на первом месте не 22 или 44 то 12 вариантов (4*7*7)*12 2352 всего 470596-5096=465500....

MrAndrewson: Среди подсчитанных вами 2744 и 2352 есть общие варианты. Когда 22 и на первом месте и в середине числа, например.

Лилия: Да это я уже поняла, только не пойму как их отловить???

AlVoro33: from itertools import permutations, product count = 0 w = product('6543210', repeat=7) for m in w: l = ''.join(m) if l[0] not in '035': if '22' in l and '44' not in l: count += 1 elif '22' not in l and '44' in l: count += 1 elif '22' not in l and '44' not in l: count += 1 print(count)



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