Тема 14. Системы счисления

14.02 Поиск цифр(-ы) числа

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела системы счисления
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#72408

Дано арифметическое выражение 23xyB15 + 36y90x  . Определите, сколько различных значений может принимать выражение при всех возможных x и y.

(Примечание: основание системы счисления x  понимается как переведенное в десятичную систему счисления число)

Показать ответ и решение

Решение программой:

В условии даны два числа 23xyB15  и 36y90x  , где x и y — это цифры, которые могут принимать значения в пределах допустимых символов для 15-ричной системы и для системы с основанием, равным значению x. Сначала мы определяем алфавит для 16-ричной системы ’0123456789ABCDEF’ и создаём пустое множество c, чтобы сохранять все уникальные значения суммы. Далее используем вложенные циклы: внешний цикл перебирает x от 10 до 14 включительно (поскольку x рассматривается как основание системы счисления для второго числа и должно быть больше y), а внутренний цикл перебирает y от 0 до x-1. Для каждого сочетания x и y формируем первое число 23xyB15  в виде строки ’23’ + alf[x] + alf[y] + ’B’ и переводим его в десятичное число с помощью int(строка, 15). Второе число 36y90x  формируем как ’36’ + alf[y] + ’90’ и переводим его в десятичное число с помощью int(строка, x), используя значение x как основание. Затем суммируем два числа и добавляем результат в множество c. После перебора всех возможных пар (x, y) количество различных значений выражения определяется как длина множества c и выводится с помощью print(len(c)). Таким образом, мы получаем число уникальных значений суммы для всех допустимых x и y.

# Определяем алфавит 16-ричной системы счисления
alf = ’0123456789ABCDEF’

# Создаем пустое множество для хранения уникальных значений выражения
c = set()

# Перебираем все возможные значения x от 10 до 14 включительно
for x in range(10, 15):
    # Для каждого x перебираем все значения y меньше x
    for y in range(x):
        # Формируем первое число $23xyB_{15}$ и переводим в десятичное число
        s1 = int(f’23{alf[x]}{alf[y]}B’, 15)

        # Формируем второе число $36y90x_{x}$ и переводим в десятичное число с основанием x
        s2 = int(f’36{alf[y]}90’, x)

        # Суммируем числа и добавляем в множество уникальных значений
        c.add(s1 + s2)

# Выводим количество различных значений арифметического выражения
print(len(c))


Ответ: 60

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!