8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Друг составляет восьмизначные числа, используя цифры от до
. Цифры в числе могут
использоваться ровно
раз или не использоваться совсем. Сначала в числе идут все четные цифры, а
затем нечётные цифры. Сколько различных чисел друг может составить?
Первой идёт одна из чётных цифр, второй одна из
оставшихся, т.к. одна уже использована,
третьей одна из
оставшихся и четвёртой последняя оставшаяся цифра. Пятой идёт одна из
нечётных цифр, шестой — одна из
оставшихся, седьмой — одна из
оставшихся и восьмой — одна
из
оставшихся. Значит друг может составить
различных чисел.
Решение кодом через циклы:
Решение через циклы строится на полном переборе всех возможных восьмизначных чисел с условием уникальности цифр. Сначала создаём пустое множество ans для хранения уникальных чисел, определяем строки chet = ’2468’ для чётных и nechet = ’13579’ для нечётных цифр. Далее используем восемь вложенных циклов для перебора каждой позиции числа: первые четыре цикла формируют чётные цифры (x1, x2, x3, x4), следующие четыре — нечётные (x5, x6, x7, x8). Формируем число как строку w = x1+x2+x3+x4+x5+x6+x7+x8. Затем проверяем условие уникальности: len(w) == len(set(w)). Если все цифры уникальны, число добавляется в множество ans. В конце выводим len(ans), что является количеством допустимых чисел.
# Создаем множество для хранения уникальных чисел ans = set() # Определяем чётные цифры chet = ’2468’ # Определяем нечётные цифры nechet = ’13579’ # Перебор всех чётных цифр для первых четырёх позиций for x1 in chet: for x2 in chet: for x3 in chet: for x4 in chet: # Перебор всех нечётных цифр для последних четырёх позиций for x5 in nechet: for x6 in nechet: for x7 in nechet: for x8 in nechet: # Формируем восьмизначное число w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 # Проверяем уникальность всех цифр if len(w) == len(set(w)): # Добавляем число в множество ans.add(w) # Выводим количество уникальных чисел print(len(ans))
Решение кодом через itertools:
Для более компактного решения используем функцию permutations из модуля itertools, которая генерирует все возможные перестановки без повторений. Сначала импортируем функцию, создаём пустое множество ans и определяем строки chet = ’2468’ и nechet = ’13579’. С помощью permutations(chet, 4) формируем все перестановки чётных цифр, аналогично permutations(nechet, 4) для нечётных цифр. Для каждой комбинации объединяем перестановки через ”.join() в строку w и добавляем её в множество ans. В конце выводим len(ans), что является количеством допустимых чисел.
from itertools import permutations # Создаем множество для хранения уникальных чисел ans = set() # Чётные цифры chet = ’2468’ # Нечётные цифры nechet = ’13579’ # Перебор всех перестановок чётных цифр for x1 in permutations(chet, 4): # Перебор всех перестановок нечётных цифр for x2 in permutations(nechet, 4): # Формируем число из двух частей w = ’’.join(x1) + ’’.join(x2) # Добавляем число в множество уникальных значений ans.add(w) # Выводим количество уникальных чисел print(len(ans))
Специальные программы

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

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

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

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

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

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