8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Определите количество восьмизначных чисел, записанных в пятиричной системе счисления, которые не оканчиваются на цифры, меньшие или равные 2, а также содержат поровну четных и нечетных цифр.
В ответе укажите одно число - количество найденных чисел.
Решение руками
Случай 1: Последняя цифра 3 (нечётная)
Если первая цифра чётная (2 или 4): 2 варианта. Остаётся 3 чётных на 6 позиций: . На каждую
позицию для нечетных можно выбрать одну из двух букв, на каждую позицию для четных - одну из трех. Итого
вариантов:
.
Если первая цифра нечётная (1 или 3): 2 варианта. Остаётся 4 чётных на 6 позиций: . На каждую
позицию для нечетных можно выбрать одну из двух букв, на каждую позицию для четных - одну из трех. Вариантов:
.
Всего для случая 1: .
Случай 2: Последняя цифра 4 (чётная)
Если первая цифра чётная (2 или 4): 2 варианта. Остаётся 2 чётных на 6 позиций: C(6,2). На каждую
позицию для нечетных можно выбрать одну из двух букв, на каждую позицию для четных - одну из трех. Вариантов:
.
Если первая цифра нечётная (1 или 3): 2 варианта. Остаётся 3 чётных на 6 позиций: .На каждую
позицию для нечетных можно выбрать одну из двух букв, на каждую позицию для четных - одну из трех. Вариантов:
.
Всего для случая 2: .
Итоговое количество: .
Решение через циклы:
Для решения задачи через циклы мы будем поэтапно формировать все восьмизначные числа в пятиричной системе (цифры от 0 до 4) и проверять их на выполнение двух условий: первая цифра не равна нулю, последняя цифра больше 2, и количество чётных и нечётных цифр одинаково. Алгоритм реализуется следующим образом:
Сначала создаём строку a = ’01234’, которая содержит все возможные цифры пятиричной системы. Создаём пустое множество count = set() для хранения уникальных чисел, удовлетворяющих условиям.
Далее используем 8 вложенных циклов for, по одному на каждую цифру числа:
1. for x1 in ’1234’ — выбираем первую цифру числа. Она не может быть нулём, поэтому перебираем только ’1’, ’2’, ’3’, ’4’.
2. for x2 in a, for x3 in a, ..., for x7 in a — для остальных цифр (со 2-й по 7-ю) выбираем любую цифру из ’0’, ’1’, ’2’, ’3’, ’4’.
3. for x8 in ’34’ — последняя цифра должна быть больше 2, поэтому перебираем только ’3’ и ’4’.
Внутри циклов формируем строку s = x1+x2+x3+x4+x5+x6+x7+x8, которая представляет текущее число.
Затем проверяем условие равного количества чётных и нечётных цифр. Для этого создаём список всех чётных цифр числа с помощью list comprehension: [i for i in s if int(i) % 2 == 0]. Аналогично для нечётных: [i for i in s if int(i) % 2 != 0]. Если их длины равны, добавляем число в множество count.
После завершения перебора всех комбинаций выводим размер множества len(count) — это и будет количество допустимых чисел.
# Создаём строку с возможными цифрами пятиричной системы a = ’01234’ # Создаём множество для хранения всех уникальных допустимых чисел count = set() # Перебираем первую цифру числа (не может быть 0) for x1 in ’1234’: # Перебираем вторую цифру числа for x2 in a: # Перебираем третью цифру числа for x3 in a: # Перебираем четвёртую цифру числа for x4 in a: # Перебираем пятую цифру числа for x5 in a: # Перебираем шестую цифру числа for x6 in a: # Перебираем седьмую цифру числа for x7 in a: # Перебираем последнюю цифру числа (должна быть > 2) for x8 in ’34’: # Формируем строку числа из выбранных цифр s = x1+x2+x3+x4+x5+x6+x7+x8 # Проверяем условие: количество чётных и нечётных цифр одинаково if len([i for i in s if int(i) % 2 == 0]) == len([i for i in s if int(i) % 2 != 0]): # Добавляем число в множество count.add(s) # Выводим количество допустимых чисел print(len(count))
Решение через itertools:
Для упрощения перебора всех комбинаций используем модуль itertools, который позволяет генерировать декартово произведение цифр с помощью функции product. Генерируем все 8-значные комбинации цифр ’0’-’4’.
1. Преобразуем кортеж x в строку s с помощью ’’.join(x).
2. Проверяем условие, что первая цифра не ноль: s[0] != ’0’.
3. Проверяем, что последняя цифра > 2: int(s[7]) > 2.
4. Подсчитываем количество чётных цифр в числе с помощью цикла for a in s: if int(a) % 2 == 0: count += 1 . 5. Если количество чётных цифр равно 4 (значит, и нечётных тоже 4), увеличиваем общий счётчик k.
В конце выводим k — количество чисел, удовлетворяющих условиям задачи.
import itertools # Счётчик допустимых чисел k = 0 # Перебор всех 8-значных комбинаций цифр ’0’-’4’ for x in itertools.product(’01234’, repeat = 8): # Преобразуем кортеж в строку числа s = ’’.join(x) # Проверяем первую цифру (не 0) и последнюю (>2) if s[0] != ’0’ and int(s[7]) > 2: # Считаем количество чётных цифр count = 0 for a in s: if int(a) % 2 == 0: count += 1 # Если чётных цифр 4, число подходит if count == 4: k += 1 # Выводим результат print(k)
Специальные программы

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

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

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

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

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

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