8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Сколько существует различных 8-значных чисел, в которых ни одна четная цифра не стоит рядом с четной и ни одна нечетная цифра не стоит рядом с нечетной?
Решение руками
Существует всего 2 варианта расстановки цифр:
Ч Н Ч Н Ч Н Ч Н
Н Ч Н Ч Н Ч Н Ч
Четных цифр всего 5, но 0 не может стоять на 1 месте. Нечетных также 5, среди них нет ограничений. Тогда
получаем: .
Решение через циклы
Составляем программу для перебора всех 8-значных чисел, в которых ни одна чётная цифра не стоит рядом с другой
чётной, а ни одна нечётная — рядом с другой нечётной. Всего существуют два возможных шаблона чередования цифр:
ЧНЧНЧНЧН и НЧНЧНЧНЧ, где Ч — чётная цифра, а Н — нечётная. Для каждого числа проверяем, что первая
цифра не равна нулю в случае, если число начинается с чётной цифры (так как число станет семизначным), и
формируем число по шаблону, перебирая все варианты цифр через циклы. Если число соответствует шаблону,
добавляем его в множество, чтобы исключить дубликаты. В конце длина множества показывает количество
допустимых чисел.
chet = "02468" nechet = "13579" count = set() # составляем число вида ЧНЧНЧНЧН, где Ч - четная цифра, а Н - нечётная цифра for x1 in "2468": # число не может начинаться с 0 for x2 in nechet: for x3 in chet: for x4 in nechet: for x5 in chet: for x6 in nechet: for x7 in chet: for x8 in nechet: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 count.add(s) # составляем число вида НЧНЧНЧНЧ, где Ч - четная цифра, а Н - нечётная цифра for x1 in nechet: for x2 in chet: for x3 in nechet: for x4 in chet: for x5 in nechet: for x6 in chet: for x7 in nechet: for x8 in chet: s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 count.add(s) print(len(count))
Решение через itertools
Для решения задачи с помощью модуля itertools мы используем функцию product, которая генерирует все возможные
8-значные последовательности цифр с повторениями. Каждое число представлено как кортеж цифр, и сначала
проверяем, что оно не начинается с нуля (чтобы число не стало семизначным). Далее идёт проверка условия
чередования чётных и нечётных цифр: проходим по всем парам соседних цифр и сравниваем их чётность. Если
находим пару с одинаковой чётностью, число не подходит, и проверка прерывается. Если все соседние цифры
чередуются корректно, счётчик увеличивается на единицу. В конце выводим значение счётчика, которое соответствует
количеству всех допустимых 8-значных чисел.
from itertools import product count = 0 # счётчик допустимых чисел # генерируем все 8-значные последовательности цифр for num in product("0123456789", repeat=8): if num[0] == "0": # пропускаем числа, начинающиеся с нуля continue # проверяем чередование четных и нечетных цифр ok = True for i in range(7): # проверяем чётность соседних цифр if int(num[i]) % 2 == int(num[i + 1]) % 2: ok = False break if ok: count += 1 # увеличиваем счётчик, если число подходит print(count) # выводим ответ
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!