8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Методист составляет для задачи пятизначные числа в четырнадцатиричной системе счисления. Сколько чисел из тех, что он составит, будут делиться на 38?
Решение руками
Найдем диапазон пятизначных чисел в 14-ричной системе:
Минимальное число = .
Максимальное число = .
Найдём первое и последнее число в диапазоне, делящееся на 38:
Первое число , делящееся на 38:
.
Последнее число , делящееся на 38:
.
Числа, делящиеся на 38, образуют арифметическую прогрессию:
Количество членов: .
Идея решения через циклы:
Мы формируем все пятизначные числа в четырнадцатиричной системе счисления, используя цифры "0"–"D". Числа не могут начинаться с нуля. После генерации каждого числа проверяем его делимость на 38 и переводим в 10сс с помощью встроенной функции int(num, 14). Если число делится на 38, оно добавляется в множество count, чтобы исключить повторения. После перебора всех комбинаций выводим количество чисел в множестве.
Решение через циклы:
a = "0123456789ABCD" # Алфавит для 14-ричной системы count = set() # Множество для хранения допустимых чисел # Перебор всех пятизначных чисел с ограничением на первую цифру for x1 in "123456789ABCD": # Первая цифра не может быть "0" for x2 in a: # Вторая цифра for x3 in a: # Третья цифра for x4 in a: # Четвёртая цифра for x5 in a: # Пятая цифра s = x1 + x2 + x3 + x4 + x5 # Собираем число # Проверка делимости на 38 if int(s, 14) % 38 == 0: count.add(s) # Добавляем число в множество print(len(count)) # Выводим количество допустимых чисел
Идея решения через itertools:
Для более компактного решения используем функцию product из модуля itertools. Она генерирует все возможные комбинации длины 5 из множества символов "0"–"D". После формирования числа проверяем, что первая цифра не равна 0, и проверяем делимость на 38. Если число удовлетворяет условиям, увеличиваем счётчик cnt. В конце выводим значение счётчика.
Решение через itertools:
from itertools import product # Импортируем функцию product s = "0123456789ABCD" # Алфавит для 14-ричной системы cnt = 0 # Счётчик допустимых чисел # Генерация всех комбинаций длины 5 for k in product(s, repeat=5): num = "".join(k) # Преобразуем кортеж в строку # Проверка, что первая цифра не равна "0" и число делится на 38 if num[0] != "0" and int(num, 14) % 38 == 0: cnt += 1 # Увеличиваем счётчик print(cnt) # Выводим количество допустимых чисел
Специальные программы

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

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

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

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

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

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