Untitled

Условие: Тип 14 № 48386

Операнды арифметического выражения записаны в системах счисления с основаниями 15 и 16:

$$ 90x4y_{15} + 91xy2_{16} $$

В записи чисел переменными x и y обозначены допустимые в данных системах счисления неизвестные цифры.

Определите значения x и y, при которых значение данного арифметического выражения будет наименьшим и кратно 56. Для найденных значений x и y вычислите частное от деления значения арифметического выражения на 56 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

Вариант 1: решение перебором

Вариант 1: решение перебором

Комментарии к первому варианту решения задачи:

  1. обратите внимание на условие: “переменными x и y обозначены допустимые в данных системах счисления неизвестные цифры”, поэтому перебираем мы по числам из наименьшей системы счисления, так как наибольшая не может лежать в наименьшей
  2. переменную y перебираем аналогично первой строчке
  3. после чего через f-строки подставляем переменные x, y и переводим получившуюся строчку в 10-ную систему счисления, используя встроенную функцию int(). Если эта функция принимает второй аргумент, то он отвечает за систему из которой был осуществлен перевод
  4. делаем аналогичные действия для второго числа
  5. если получившееся арифметическое выражение (в десятичной системе) делится на 56 без остатка, то оно удовлетворяет условию кратности
  6. выводим целую часть (частное) от деления на экран
  7. а так как выводов может быть несколько, то прерываем выполнение программы, чтобы оставить наименьшее
# Код решения Вариант 1
for x in '0123456789abcde':
    for y in '0123456789abcde':
        a = int(f'90{x}4{y}', 15)
        b = int(f'91{x}{y}2', 16)
        if (a + b) % 56 == 0:
            print((a + b) // 56)
            exit()

Вариант 2: решение аналогичное первому, только более компактное

Вариант 2: решение аналогичное первому, только более компактное

# Код решения Вариант 2
for x in '0123456789abcde':
    for y in '0123456789abcde':
        r = int(f'90{x}4{y}', 15) + int(f'91{x}{y}2', 16)
        if r % 56 == 0:
            print(r // 56)
            exit()