8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Иван составляет 9-разрядные двадцатипятиричные числа, в которых цифры, которые кратны трем и кратны восьми, чередуются. Сколько различных чисел может составить Иван?
Для составления чисел можно использовать цифры от 0 до 9 и числа от 10 до 24 включительно. Из них кратны трем: 0, 3, 6, 9, 12, 15, 18, 21, 24. Кратны восьми: 0, 8, 16, 24. Кратны и трем, и восьми: 0, 24
Количество 9-разрядных чисел, которые начинаются с цифры, кратной трем:
Количество 9-разрядных чисел, которые начинаются с цифры, кратной восьми:
Также нам необходимо из общего количества вычесть те числа, которые находятся и в первом случае, и во втором случае. Их число равно:
Получаем общее число слов:
Идея решения через циклы:
Мы формируем все 9-разрядные числа в двадцатипятиричной системе, в которых цифры, кратные трём и кратные восьми, чередуются. Для этого задаём два множества символов: alf_3 для цифр, кратных трём, и alf_8 для цифр, кратных восьми. Используем 9 вложенных циклов for, чтобы перебрать все варианты цифр на соответствующих позициях. Так как чередование может начинаться с цифры, кратной трём, или с цифры, кратной восьми, мы дважды меняем местами алфавиты, чтобы сгенерировать все варианты. Каждое сформированное число, которое не начинается с нуля, добавляем в множество ans для исключения повторов.
Решение через циклы:
# Множество для хранения уникальных чисел ans = set() # Символы, кратные 3 alf_3 = "0369CFILO" # Символы, кратные 8 alf_8 = "08GO" # Два варианта чередования: начиная с кратного 3 или кратного 8 for i in range(2): # Перебор 1-й цифры (кратной 3 или 8) for x1 in alf_3: # Перебор 2-й цифры (кратной 8 или 3) for x2 in alf_8: for x3 in alf_3: for x4 in alf_8: for x5 in alf_3: for x6 in alf_8: for x7 in alf_3: for x8 in alf_8: for x9 in alf_3: # Собираем 9-разрядное число w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 # Проверяем, что число не начинается с нуля if x1 != "0": ans.add(w) # Меняем местами алфавиты для второго варианта чередования alf_3, alf_8 = alf_8, alf_3 # Выводим количество уникальных чисел print(len(ans))
Идея решения через itertools:
Для решения с помощью модуля itertools используем функцию product, которая генерирует все комбинации заданной длины с повторениями из выбранного множества символов. Сначала генерируем все комбинации, где первая цифра кратна трём (всего 5 цифр) и оставшиеся цифры кратны восьми (4 цифры), чередуя их при сборке числа. Затем повторяем процедуру, начиная с цифры, кратной восьми. Каждое число, которое не начинается с нуля, добавляем в множество ans для исключения повторов.
Решение через itertools:
from itertools import product # Импортируем функцию product # Символы, кратные 3 alf_3 = "0369CFILO" # Символы, кратные 8 alf_8 = "08GO" # Множество для хранения уникальных чисел ans = set() # Перебор комбинаций с первой цифрой кратной 3 for a in product(alf_3, repeat=5): for b in product(alf_8, repeat=4): # Формируем число, чередуя цифры s = a[0] + b[0] + a[1] + b[1] + a[2] + b[2] + a[3] + b[3] + a[4] # Проверяем, что число не начинается с нуля if s[0] != "0": ans.add(s) # Перебор комбинаций с первой цифрой кратной 8 for a in product(alf_8, repeat=5): for b in product(alf_3, repeat=4): # Формируем число, чередуя цифры s = a[0] + b[0] + a[1] + b[1] + a[2] + b[2] + a[3] + b[3] + a[4] # Проверяем, что число не начинается с нуля if s[0] != "0": ans.add(s) # Выводим количество уникальных чисел print(len(ans))
Специальные программы

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

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

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

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

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

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