К содержанию

Подтема 5 из 6

Неизвестные цифры

Неизвестная цифра x в записи: какие значения она принимает, как её перебрать, что записать в ответ — и две неизвестные цифры.

Что значит x в записи

Третий вид задания: «Операнды выражения записаны в системе с основанием 18: 77968x11₁₈ + 4x213₁₈. x — неизвестная цифра из алфавита 18-ричной системы. Найди наибольшее x, при котором значение выражения кратно 7, и запиши в ответ частное от деления значения на 7.»

Здесь x — одна цифра записи: она одинакова во всех местах, где стоит, и принимает значения от 0 до q − 1. 4x213₁₈ при x = 5 — это 45213₁₈, а не 4 · 5 · 213. Для основания 18 цифра x — от 0 до 17.

Но границы x зависят от формулировки условия — выбери вариант:

x — цифра 18-ричной системы
0, …, 17
x — цифра из алфавита десятичной системы
0, …, 9даже если числа записаны в основании 18
x стоит в записях с основаниями 8 и 13
0, …, 7цифра должна быть допустима в обеих
x — первая цифра числа
ноль исключается

Перебор цифры

Как найти x? Значений у x всего 18 — проще всего проверить каждое.

Для каждой цифры собирают обе записи, считают их сумму и проверяют, делится ли она на 7. Собрать запись можно строкой или списком цифр:

Строкой

Перебирают символы алфавита: цифры 0–9 и буквы a–h для значений 10–17. Строки склеивают знаком + и читают int(s, 18):

for x in '0123456789abcdefgh':    a = int('77968' + x + '11', 18)    b = int('4' + x + '213', 18)    if (a + b) % 7 == 0:        print(x, (a + b) // 7)
3 648821068 a 648827224 h 648833380
Списком цифр

Функция value читает запись слева направо: дописать справа цифру d — значит заменить значение v на v · q + d. Пройди по шагам:

def value(ds, q):    v = 0    for d in ds:        v = v * q + d    return v  print(value([2, 3, 0, 4], 5))
329

Цифры — числа, на месте x стоит сама переменная цикла. Перебор сверху вниз сразу даёт наибольшее x:

for x in range(17, -1, -1):    a = value([7, 7, 9, 6, 8, x, 1, 1], 18)    b = value([4, x, 2, 1, 3], 18)    if (a + b) % 7 == 0:        print(x, (a + b) // 7)        break
17 648833380

Подходят цифры 3, a = 10 и h = 17; наибольшая — h. Ответ: частное 648833380.

Тонкости:строки и основания больше 36

В строку подставляют символ цифры, а не str её значения: при x = 10 запись '1' + str(x) + '2' даст четыре цифры 1102 вместо трёх. При основании больше 36 букв не хватает — тогда только список цифр и value.

Что записать в ответ

Нашли x = 17. Это ответ?

В ответ записывают ровно ту величину, о которой спрашивают: цифру, значение выражения или частное. В нашей задаче это частное от деления на 7. Посмотри, что пришлось бы записать при других вопросах:

частное от деления на 7
648833380
значение выражения
4541833660в десятичной системе
цифру x
17её значение, а не символ h

Если в условии сказано «ненулевая цифра», перебор начинают с 1. А если в выражении есть вычитание, так и пиши в программе: a + b - c.

Разные основания

А если записи с x в разных системах — например, 3x2₈ + 2x5₁₃, и сумма должна делиться на 17?

Значение цифры x одно, а вес разряда в каждой записи свой; x должен быть допустим во всех записях. Цифра есть в восьмеричной записи, значит, x — от 0 до 7. В 3x2₈ она умножается на 8, в 2x5₁₃ — на 13. Значения удобно считать функцией value из вкладки «Списком цифр»:

for x in range(8):    a = value([3, x, 2], 8)    b = value([2, x, 5], 13)    if (a + b) % 17 == 0:        print(x, (a + b) // 17)        break
6 39

x = 6: 362₈ + 265₁₃ = 242 + 421 = 663 = 17 · 39.

Две неизвестные цифры

Бывает и две неизвестные цифры. Например: найди наименьшее значение 1xy₅ + 2yx₇, кратное 5, и запиши частное от деления на 5.

Пары перебирают двумя вложенными циклами и сравнивают все подходящие: первая найденная пара почти никогда не даёт наименьшее значение. Обе цифры есть в пятеричной записи, поэтому x и y — от 0 до 4: всего 25 пар.

Все 25 пар: сумма 123 + 6x + 8y. Первой подходящей в переборе будет x = 0, y = 4 — сумма 155, а наименьшая — 135 при x = 2, y = 0.
best = Nonefor x in range(5):    for y in range(5):        total = value([1, x, y], 5) + value([2, y, x], 7)        if total % 5 == 0:            if best is None or total < best:                best = totalprint(best, best // 5)
135 27

В best лежит наименьшая подходящая сумма. Условие верно для первой подходящей суммы и для каждой меньшей. Ответ: 135 / 5 = 27.

Тонкости:разные буквы и вопросы о паре

Разные буквы могут обозначать одинаковые цифры, если условие не запрещает. Диапазоны букв считают отдельно: в 1x2₈ + 2yA₁₆ x — до 7, а y — до 15. Если спрашивают о самой паре («запись yx — наибольшая»), сравнивают уже эту величину. во внутреннем цикле останавливает только его.

Итого

  • x в записиодна цифра, одинаковая везде
  • Диапазонот 0 до наименьшего основания − 1
  • Переборint(s, q) или value(ds, q)
  • Ответчто спросили: частное, x, значение
  • Две цифрывложенные циклы и сравнение всех пар
  • Примерx = 17, частное 648833380

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Какие значения может принимать x в записи 4x213₁₈?
ОтветСкрыть ответ
Ответ
От 0 до 17: цифры 18-ричной системы.
Вопрос 2
А в сумме 3x2₈ + 2x5₁₃?
ОтветСкрыть ответ
Ответ
От 0 до 7: цифра должна быть допустима в обеих записях.
Вопрос 3
Чему равно 2x3₇ при x = 4?
ОтветСкрыть ответ
Ответ
129: 243₇ = 2 · 49 + 4 · 7 + 3.
Вопрос 4
Перебор цифр идёт от 0 вверх. Как найти наибольшее подходящее x?
ОтветСкрыть ответ
Ответ
Запомнить последнее подходящее или перебирать сверху вниз и остановиться на первом.
Вопрос 5
Почему при двух цифрах первая подходящая пара не обязательно даёт наименьшую сумму?
ОтветСкрыть ответ
Ответ
Порядок перебора пар не совпадает с порядком сумм: уменьшение одной цифры может идти вместе с ростом другой.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Цифра из десятичного алфавита

Операнды арифметического выражения записаны в системах счисления с основаниями 14 и 12: 5x7₁₄ + x3B₁₂. Переменной x обозначена неизвестная цифра из алфавита десятичной системы счисления. Определи значение x, при котором значение выражения кратно 20. Для найденного x вычисли частное от деления значения выражения на 20.

Введите число.

2x3₇ + 1x4₇ делится на 6

Найди минимальную цифру x, при которой 2x3₇ + 1x4₇ делится на 6. В ответе укажи частное от деления суммы на 6.

Введите число.

Значение 2x7₄₀ при x = 33

Найди значение записи 2x7₄₀, если x — одна цифра со значением 33.

Введите число.

7x3A₁₉ + 4Bx3₁₉ кратно 18

Операнды арифметического выражения записаны в системе счисления с основанием 19: 7x3A₁₉ + 4Bx3₁₉. В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления. Определи наименьшее значение x, при котором значение выражения кратно 18. Для найденного x вычисли частное от деления значения выражения на 18 и укажи его в десятичной системе счисления.

Введите число.

Основание 41

Операнды арифметического выражения записаны в системе счисления с основанием 41: 6x29₄₁ + 1x07x₄₁. Переменной x обозначена неизвестная цифра из алфавита 41-ричной системы счисления. Определи наименьшее значение x, при котором значение выражения кратно 40. Для найденного x вычисли частное от деления значения выражения на 40.

Введите число.

Три операнда в 23-ричной системе

Операнды арифметического выражения записаны в системе счисления с основанием 23: 5x18C3₂₃ + 2x7x₂₃ + 96x41₂₃. Переменной x обозначена неизвестная цифра из алфавита 23-ричной системы счисления. Определи наибольшее значение x, при котором значение выражения кратно 22. Для найденного x вычисли частное от деления значения выражения на 22.

Введите число.

2x1₆ + 1x3₈ делится на 5

Найди максимальную допустимую цифру x, при которой 2x1₆ + 1x3₈ делится на 5. В ответе укажи частное.

Введите число.

1xy₄ + 2yx₅ делится на 7

Найди минимальное значение выражения 1xy₄ + 2yx₅, которое делится на 7. В ответе укажи частное.

Введите число.

Наименьшее значение, кратное 41

Операнды арифметического выражения записаны в системах счисления с основаниями 11 и 13: 3x6y₁₁ + y5x1₁₃. Переменными x и y обозначены допустимые в данных системах счисления неизвестные цифры. Определи значения x и y, при которых значение выражения будет наименьшим и кратно 41. Для найденных значений вычисли частное от деления значения выражения на 41.

Введите число.

Наибольшее yx₃₈

В числе 4x1y7₃₈ переменные x и y обозначают некоторые цифры из алфавита системы счисления с основанием 38. Определи такие значения x и y, при которых число кратно 37, а число yx₃₈ имеет наибольшее возможное значение. В ответе запиши значение yx₃₈ в десятичной системе счисления.

Введите число.

yx₄₂ — полный квадрат

В числе 3x5y₄₂ переменные x и y обозначают цифры из алфавита системы счисления с основанием 42. Число кратно 41, а число yx₄₂ — ненулевой полный квадрат. Найди наибольшее такое значение yx₄₂ и запиши его в десятичной системе счисления.

Введите число.