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

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

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

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

Задача 41#85900Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 27.

2F xL32527 + 17xBC527 + 31xM N27

В записи чисел переменной x обозначена неизвестная цифра из алфавита 27-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 15. Для найденного значения x вычислите частное от деления значения арифметического выражения на 15 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны три числа 2FxL32527  , 17xBC527  и 31xM N27  , содержащие переменную x, которая может принимать значения из алфавита 27-ричной системы счисления. Нам необходимо определить наименьшее значение x, при котором сумма этих чисел делится на 15, а затем вычислить частное от деления суммы на 15. Для этого мы создаём цикл for x in ’0123456789ABCDEFGHIJKLMNOPQ’:, который последовательно перебирает все возможные значения x в 27-ричной системе. На каждом шаге мы формируем строки с подставленной цифрой x и преобразуем их в десятичные числа с помощью функции int(..., 27): s1 = int(’2F’+x+’L325’, 27), s2 = int(’17’+x+’BC5’, 27) и s3 = int(’31’+x+’MN’, 27). Далее находим сумму этих чисел s = s1 + s2 + s3 и проверяем, делится ли сумма на 15 через if s % 15 == 0. Как только находим наименьшее x, удовлетворяющее условию, выводим x и частное от деления суммы на 15 с помощью print(x, s // 15) и прерываем цикл командой break.

# Перебираем все возможные цифры x в 27-ричной системе
for x in ’0123456789ABCDEFGHIJKLMNOPQ’:
    # Преобразуем первое число $2FxL325_{27}$ в десятичную систему
    s1 = int(’2F’+ x +’L325’, 27)
    # Преобразуем второе число $17xBC5_{27}$ в десятичную систему
    s2 = int(’17’ + x + ’BC5’, 27)
    # Преобразуем третье число $31xMN_{27}$ в десятичную систему
    s3 = int(’31’ + x + ’MN’, 27)
    # Вычисляем сумму трёх чисел
    s = s1 + s2 + s3
    # Проверяем, делится ли сумма на 15
    if s % 15 == 0:
        # Если делится, выводим текущее значение x и частное от деления суммы на 15
        print(x, s // 15)
        # Прерываем цикл, так как найдено наименьшее подходящее значение x
        break

Ответ: 67382266

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

Задача 42#85901Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 20.

34xDJx20 + xF I7820 + 80Ax720 + 3IF49x220

В записи чисел переменной x обозначена неизвестная цифра из алфавита 20-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 13. Для найденного значения x вычислите частное от деления значения арифметического выражения на 13 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны четыре числа 34xDJx20  , xF I7820  , 80Ax720  и 3IF49x220  , содержащие переменную x, которая может принимать значения из алфавита 20-ричной системы счисления. Наша задача — определить наибольшее значение x, при котором сумма этих чисел делится на 13, а затем вычислить частное от деления суммы на 13. Для этого мы создаём цикл for x in ’0123456789ABCDEFGHIJ’:, который последовательно перебирает все возможные значения x в 20-ричной системе. На каждом шаге мы формируем строки с подставленной цифрой x и преобразуем их в десятичные числа с помощью функции int(..., 20): s1 = int(’34’+x+’DJ’+x, 20), s2 = int(x+’FI78’, 20), s3 = int(’80A’+x+’7’, 20) и s4 = int(’3IF49’+x+’2’, 20). Далее находим сумму этих чисел s = s1 + s2 + s3 + s4 и проверяем, делится ли сумма на 13 через if s % 13 == 0. Как только находим наибольшее x, удовлетворяющее условию, выводим x и частное от деления суммы на 13 с помощью print(x, s // 13). Таким образом, алгоритм последовательно перебирает варианты x, конвертирует числа из 20-ричной системы в десятичную, проверяет делимость на 13 и выводит результат для наибольшего x.

# Перебираем все возможные цифры x в 20-ричной системе
for x in ’0123456789ABCDEFGHIJ’:
    # Преобразуем первое число $34xDJx_{20}$ в десятичную систему
    s1 = int(’34’ + x + ’DJ’ + x, 20)
    # Преобразуем второе число $xFI78_{20}$ в десятичную систему
    s2 = int(x + ’FI78’, 20)
    # Преобразуем третье число $80Ax7_{20}$ в десятичную систему
    s3 = int(’80A’ + x + ’7’, 20)
    # Преобразуем четвёртое число $3IF49x2_{20}$ в десятичную систему
    s4 = int(’3IF49’ + x + ’2’, 20)
    # Вычисляем сумму четырёх чисел
    s = s1 + s2 + s3 + s4
    # Проверяем, делится ли сумма на 13
    if s % 13 == 0:
        # Если делится, выводим текущее значение x и частное от деления суммы на 13
        print(x, s // 13)

Ответ: 20490861

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

Задача 43#85902Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 45.

ZxX9845 + x3996245

В записи чисел переменной x обозначена неизвестная цифра из алфавита 45-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 26. Для найденного значения x вычислите частное от деления значения арифметического выражения на 26 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны два числа ZxX9845  и x3996245  , содержащие переменную x, которая может принимать значения от 0 до 44, так как мы работаем в 45-ричной системе. Наша задача — найти наибольшее значение x, при котором сумма этих чисел делится на 26, а затем вычислить частное от деления суммы на 26. Для этого мы используем цикл for x in range(45):, который перебирает все возможные значения x. Каждое число мы представляем в десятичной системе через разложение по степеням 45, учитывая позиции каждой цифры: для первого числа ZxX9845  старшая цифра Z равна 35, следующая x умножается на   3
45  , далее X = 33 на  2
45  , 9 на 451  и 8 на 450  , что записано как s1 = 35 * 45 ** 4 + x * 45 ** 3 + 33 * 45 ** 2 + 9 * 45 + 8. Для второго числа x3996245  аналогично: x на 455  , 3 на 454  , 9 на 453  , 9 на 452  , 6 на 451  , 2 на 450  , что соответствует s2 = x * 45 ** 5 + 3 * 45 ** 4 + 9 * 45 ** 3 + 9 * 45 ** 2 + 6 * 45 + 2. Далее находим сумму этих чисел s = s1 + s2 и проверяем, делится ли она на 26 через if s % 26 == 0. Как только найдено наибольшее x, удовлетворяющее условию, выводим его и частное от деления суммы на 26 с помощью print(x, s // 26). Таким образом, алгоритм последовательно перебирает значения x, преобразует числа из 45-ричной системы в десятичную, проверяет делимость на 26 и выводит результат для наибольшего x.

# Перебираем все возможные значения x от 0 до 44
for x in range(45):
    # Вычисляем первое число $ZxX98_{45}$ в десятичной системе
    s1 = 35 * 45 ** 4 + x * 45 ** 3 + 33 * 45 ** 2 + 9 * 45 + 8
    # Вычисляем второе число $x39962_{45}$ в десятичной системе
    s2 = x * 45 ** 5 + 3 * 45 ** 4 + 9 * 45 ** 3 + 9 * 45 ** 2 + 6 * 45 + 2
    # Находим сумму чисел
    s = s1 + s2
    # Проверяем, делится ли сумма на 26
    if s % 26 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 26
        print(x, s // 26)

Ответ: 247453235

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

Задача 44#85903Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 76.

M 37x0XW76  + O023xP Q76 + EP 224xx76

В записи чисел переменной x обозначена неизвестная цифра из алфавита 76-ричной системы счисления. Определите значение x, при котором значение данного арифметического выражения кратно 54. Для найденного значения x вычислите частное от деления значения арифметического выражения на 54 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны три числа M 37x0XW76  , O023xP Q76  и EP 224xx76  , содержащие переменную x, которая может принимать значения от 0 до 75, так как мы работаем в 76-ричной системе. Наша задача — найти такое значение x, при котором сумма этих чисел делится на 54, а затем вычислить частное от деления суммы на 54. Для этого мы используем цикл for x in range(76):, который перебирает все возможные значения x. Каждое число представлено в десятичной системе через разложение по степеням 76, учитывая позиции каждой цифры.

Для первого числа M 37x0XW76  старшая цифра M = 22 на 766  , далее 3 на 765  , 7 на 764  , x на 763  , 0 на 762  , X = 33 на 761  и W = 32 на 760  , что записано как s1 = 22 * 76 ** 6 + 3 * 76 ** 5 + 7 * 76 ** 4 + x * 76 ** 3 + 33 * 76 + 32.

Для второго числа O023xP Q76  аналогично: O = 24 на 766  , 0 на 765  , 2 на 764  , 3 на 763  , x на 762  , P = 25 на 761  , Q = 26 на 760  , что соответствует s2 = 24 * 76 ** 6 + 2 * 76 ** 4 + 3 * 76 ** 3 + x * 76 ** 2 + 25 * 76 + 26.

Третье число EP 224xx76  преобразуем аналогично: E = 14 на   6
76  , P = 25 на   5
76  , 2 на   4
76  , 2 на   3
76  , 4 на    2
 76  , x на 761  , x на 760  , что записано как s3 = 14 * 76 ** 6 + 25 * 76 ** 5 + 2 * 76 ** 4 + 2 * 76 ** 3 + 4 * 76 ** 2 + x * 76 + x.

Далее суммируем все три числа s = s1 + s2 + s3 и проверяем, делится ли сумма на 54 через if s % 54 == 0. Как только найдено подходящее значение x, выводим его и частное от деления суммы на 54 с помощью print(x, s // 54).

# Перебираем все возможные значения x от 0 до 75
for x in range(76):
    # Вычисляем первое число $M37x0XW_{76}$ в десятичной системе
    s1 = 22 * 76 ** 6 + 3 * 76 ** 5 + 7 * 76 ** 4 + x * 76 ** 3 + 33 * 76 + 32
    # Вычисляем второе число $O023xPQ_{76}$ в десятичной системе
    s2 = 24 * 76 ** 6 + 2 * 76 ** 4 + 3 * 76 ** 3 + x * 76 ** 2 + 25 * 76 + 26
    # Вычисляем третье число $EP224xx_{76}$ в десятичной системе
    s3 = 14 * 76 ** 6 + 25 * 76 ** 5 + 2 * 76 ** 4 + 2 * 76 ** 3 + 4 * 76 ** 2 + x * 76 + x
    # Находим сумму чисел
    s = s1 + s2 + s3
    # Проверяем, делится ли сумма на 54
    if s % 54 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 54
        print(x, s // 54)

Ответ: 215432915271

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

Задача 45#85904Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 32.

2x13732 + 735x5127x32 + 32x232 + 3x18832 + 1x74x1932

В записи чисел переменной x обозначена неизвестная цифра из алфавита 32-ричной системы счисления. Определите значение x, при котором значение данного арифметического выражения кратно 64. Для найденного значения x вычислите частное от деления значения арифметического выражения на 64 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны пять чисел 2x13732  , 735x5127x32  , 32x232  , 3x18832  и 1x74x1932  , содержащие переменную x, которая может принимать значения от 0 до 31, поскольку мы работаем в 32-ричной системе. Наша цель — найти такое значение x, при котором сумма этих чисел делится на 64, а затем вычислить частное от деления суммы на 64. Для этого мы используем цикл for x in ’0123456789ABCDEFGHIJKLMNOPQRSTUV’:, перебирающий все допустимые значения x, представленные в виде символов строки. Каждое число преобразуем в десятичное с помощью функции int(), где первый аргумент — это строковое представление числа, а второй аргумент — основание системы счисления, в данном случае 32. Например, для числа 2x13732  мы формируем строку ’2’ + x + ’137’ и передаем её в int(’2’ + x + ’137’, 32) для получения десятичного значения s1. Аналогично формируем строки для остальных чисел: ’735’ + x + ’5127’ + x для 735x5127x32  , ’32’ + x + ’2’ для 32x232  , ’3’ + x + ’188’ для 3x18832  и ’1’ + x + ’74’ + x + ’19’ для 1x74x1932  , и получаем их десятичные значения s2, s3, s4, s5. Затем суммируем все числа s = s1 + s2 + s3 + s4 + s5 и проверяем, делится ли сумма на 64 с помощью if s % 64 == 0. Как только условие выполняется, выводим текущее значение x и частное от деления суммы на 64 через print(x, s // 64). Таким образом, алгоритм перебирает все возможные значения x, преобразует числа из 32-ричной системы в десятичную, проверяет делимость на 64 и выводит результат.

# Перебираем все возможные значения x от 0 до 31 в 32-ричной системе
for x in "0123456789ABCDEFGHIJKLMNOPQRSTUV":
    # Вычисляем первое число $2x137_{32}$ в десятичной системе
    s1 = int("2" + x + "137", 32)
    # Вычисляем второе число $735x5127x_{32}$ в десятичной системе
    s2 = int("735" + x + "5127" + x , 32)
    # Вычисляем третье число $32x2_{32}$ в десятичной системе
    s3 = int("32" + x + "2", 32)
    # Вычисляем четвертое число $3x188_{32}$ в десятичной системе
    s4 = int("3" + x + "188", 32)
    # Вычисляем пятое число $1x74x19_{32}$ в десятичной системе
    s5 = int("1" + x + "74" + x + "19", 32)
    # Находим сумму чисел
    s = s1 + s2 + s3 + s4 + s5
    # Проверяем, делится ли сумма на 64
    if s % 64 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 64
        print(x, s // 64)

Ответ: 121976940749

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

Задача 46#85905Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 28.

3LF x28 + 67BF CxN28 + 4x982D28 +P Q20x628

В записи чисел переменной x обозначена неизвестная цифра из алфавита 28-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 18. Для найденного значения x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

Даны четыре числа 3LF x28  , 67BF CxN28  , 4x982D28  и P Q20x628  , содержащие переменную x, которая может принимать значения от 0 до 27, поскольку мы работаем в 28-ричной системе. Наша цель — найти наименьшее значение x, при котором сумма этих чисел делится на 18, а затем вычислить частное от деления суммы на 18. Для этого мы используем цикл for x in ’0123456789ABCDEFGHIJKLMNOPQR’:, перебирающий все допустимые значения x, представленные в виде символов строки. Каждое число преобразуем в десятичное с помощью функции int(), где первый аргумент — это строковое представление числа, а второй аргумент — основание системы счисления, в данном случае 28. Например, для числа 3LFx28  мы формируем строку ’3LF’ + x и передаем её в int(’3LF’ + x, 28) для получения десятичного значения s1. Аналогично формируем строки для остальных чисел: ’67BFC’ + x + ’N’ для 67BF CxN28  , ’4’ + x + ’982D’ для 4x982D28  и ’PQ20’ + x + ’6’ для P Q20x628  , и получаем их десятичные значения s2, s3, s4. Затем суммируем все числа s = s1 + s2 + s3 + s4 и проверяем, делится ли сумма на 18 с помощью if s % 18 == 0. Как только условие выполняется, выводим текущее значение x и частное от деления суммы на 18 через print(x, s // 18). Таким образом, алгоритм перебирает все возможные значения x, преобразует числа из 28-ричной системы в десятичную, проверяет делимость на 18 и выводит результат.

# Перебираем все возможные значения x от 0 до 27 в 28-ричной системе
for x in "0123456789ABCDEFGHIJKLMNOPQR":
    # Вычисляем первое число $3LFx_{28}$ в десятичной системе
    s1 = int("3LF" + x, 28)
    # Вычисляем второе число $67BFCxN_{28}$ в десятичной системе
    s2 = int("67BFC" + x + "N", 28)
    # Вычисляем третье число $4x982D_{28}$ в десятичной системе
    s3 = int("4" + x + "982D", 28)
    # Вычисляем четвертое число $PQ20x6_{28}$ в десятичной системе
    s4 = int("PQ20" + x + "6", 28)
    # Находим сумму чисел
    s = s1 + s2 + s3 + s4
    # Проверяем, делится ли сумма на 18
    if s % 18 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 18
        print(x, s // 18)

Ответ: 196419780

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

Задача 47#85906Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системах счисления с основаниями 30, 98 и 112.

70x112 + 98xAG98 + 12CxK30

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

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

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

В задаче даны три числа, записанные в разных системах счисления: 70x112  , 98xAG98  и 12CxK30  , где x — неизвестная цифра, которую требуется определить. Наша цель — найти наибольшее значение x, при котором сумма этих чисел делится на 21, а затем вычислить частное от деления суммы на 21. Для решения мы используем цикл for x in range(30):, так как x не может быть больше наибольшей цифры из числа с наименьшим основанием (в данном случае 30). Внутри цикла мы вычисляем десятичное значение каждого числа, раскладывая его по степеням основания соответствующей системы счисления. Для первого числа 70x112  применяем формулу s1 = 7 * 112 ** 2 + x, где 7 — старшая цифра, 0 — средняя цифра, а x — неизвестная. Для второго числа 98xAG98  вычисляем s2 = 9 * 98 ** 4 + 8 * 98 ** 3 + x * 98 ** 2 + 10 * 98 + 16, где цифры A и G переведены в десятичные значения 10 и 16 соответственно. Для третьего числа 12CxK30  аналогично строим s3 = 1 * 30 ** 4 + 2 * 30 ** 3 + 12 * 30 ** 2 + x * 30 + 20, где C и K переведены в 12 и 20. Затем суммируем все числа s = s1 + s2 + s3 и проверяем, делится ли сумма на 21 с помощью условия if s % 21 == 0. Как только находим такое x, выводим его и частное от деления суммы на 21 через print(x, s // 21). Таким образом, алгоритм перебирает все возможные значения x, переводит числа из разных систем счисления в десятичные, проверяет делимость суммы на 21 и выводит результат для наибольшего x, удовлетворяющего условию.

# Перебираем все возможные значения x от 0 до 29
for x in range(30):
    # Вычисляем первое число $70x_{112}$ в десятичной системе
    s1 = 7 * 112 ** 2 + x
    # Вычисляем второе число $98xAG_{98}$ в десятичной системе
    s2 = 9 * 98 ** 4 + 8 * 98 ** 3 + x * 98 ** 2 + 10 * 98 + 16
    # Вычисляем третье число $12CxK_{30}$ в десятичной системе
    s3 = 1 * 30 ** 4 + 2 * 30 ** 3 + 12 * 30 ** 2 + x * 30 + 20
    # Находим сумму чисел
    s = s1 + s2 + s3
    # Проверяем, делится ли сумма на 21
    if s % 21 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 21
        print(x, s // 21)

Ответ: 39944594

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

Задача 48#85907Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системах счисления с основаниями 12 и 78.

B76Ax5612 + W OW  1x92L78

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

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

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

В задаче даны два числа, записанные в разных системах счисления: B76Ax5612  и W OW  1x92L78  , где x — неизвестная цифра. Нам требуется найти все значения x, при которых сумма этих чисел делится на 15, и затем вычислить сумму частных от деления этой суммы на 15. Для решения мы используем цикл for x in range(12):, так как x не может превышать наибольшей цифры из числа с наименьшим основанием (в данном случае 12). Внутри цикла мы вычисляем десятичное значение первого числа B76Ax5612  , раскладывая его по степеням 12: s1 = 11 * 12 ** 6 + 7 * 12 ** 5 + 6 * 12 ** 4 + 10 * 12 ** 3 + x * 12 ** 2 + 5 * 12 + 6, где цифры B и A переведены в 11 и 10 соответственно, а x подставляется на месте неизвестной цифры. Для второго числа W OW  1x92L78  аналогично раскладываем по степеням 78: s2 = 32 * 78 ** 7 + 24 * 78 ** 6 + 32 * 78 ** 5 + 78 ** 4 + x * 78 ** 3 + 9 * 78 ** 2 + 2 * 78 + 21, где цифры W, O и L переведены в десятичные значения 32, 24 и 21, а x подставляется на соответствующем месте. Далее суммируем числа s = s1 + s2 и проверяем делимость суммы на 15 через if s % 15 == 0. Если условие выполняется, добавляем частное от деления на 15 в множество a, чтобы избежать повторов. После перебора всех возможных x суммируем все элементы множества a с помощью sum(a), получая итоговый ответ.

# Создаем пустое множество для хранения частных от деления на 15
a = set()
# Перебираем все возможные значения x от 0 до 11
for x in range(12):
    # Вычисляем первое число $B76Ax56_{12}$ в десятичной системе
    s1 = 11 * 12 ** 6 + 7 * 12 ** 5 + 6 * 12 ** 4 + 10 * 12 ** 3 + x * 12 ** 2 + 5 * 12 + 6
    # Вычисляем второе число $WOW1x92L_{78}$ в десятичной системе
    s2 = 32 * 78 ** 7 + 24 * 78 ** 6 + 32 * 78 ** 5 + 78 ** 4 + x * 78 ** 3 + 9 * 78 ** 2 + 2 * 78 + 21
    # Находим сумму чисел
    s = s1 + s2
    # Проверяем, делится ли сумма на 15
    if s % 15 == 0:
        # Если делится, добавляем частное от деления на 15 во множество
        a.add(s // 15)
# Выводим сумму всех частных от деления на 15
print(sum(a))

Ответ: 113519091505347

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

Задача 49#85908Максимум баллов за задание: 1

Операнды арифметического выражения записаны в системе счисления с основанием 14.

9x9x14 + Ax9014

В записи чисел переменной x обозначена неизвестная цифра из алфавита 14-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 8. Для найденного x вычислите частное от деления значения арифметического выражения на 8 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

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

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

В задаче даны два числа, записанные в 14-ричной системе счисления: 9x9x14  и Ax9014  , где x — неизвестная цифра. Нам требуется найти наибольшее значение x, при котором сумма этих чисел делится на 8, и затем вычислить частное от деления этой суммы на 8. Для решения мы перебираем все возможные значения x из алфавита 14-ричной системы, задавая цикл for x in ’0123456789ABCD’:, так как наибольшая цифра в 14-ричной системе — D (соответствует 13 в десятичной). Внутри цикла мы вычисляем десятичное значение первого числа 9x9x14  с помощью функции int, передавая строковое представление числа с подставленным x и указывая основание 14: s1 = int(’9’ + x + ’9’ + x, 14). Аналогично для второго числа Ax9014  : s2 = int(’A’ + x + ’90’, 14), где A соответствует 10 в десятичной системе, а x подставляется на месте неизвестной цифры. Далее суммируем эти два числа s = s1 + s2 и проверяем делимость суммы на 8 через условие if s % 8 == 0. Если сумма делится на 8, выводим текущее значение x и частное от деления суммы на 8 через print(x, s // 8).

# Перебираем все возможные значения x из алфавита 14-ричной системы
for x in ’0123456789ABCD’:
    # Вычисляем первое число $9x9x_{14}$ в десятичной системе
    s1 = int(’9’ + x + ’9’ + x, 14)
    # Вычисляем второе число $Ax90_{14}$ в десятичной системе
    s2 = int(’A’ + x + ’90’, 14)
    # Находим сумму чисел
    s = s1 + s2
    # Проверяем, делится ли сумма на 8
    if s % 8 == 0:
        # Если делится, выводим текущее значение x и частное от деления на 8
        print(x, s // 8)

Ответ: 7138

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

Задача 50#137634Максимум баллов за задание: 1

Значение арифметического выражения

3⋅438 + 2 ⋅423 + 420 +3 ⋅45 + 44 + 1

записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?

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

В задаче требуется посчитать количество значащих нулей в записи некоторого большого числа в шестнадцатеричной системе счисления. Сначала мы должны вычислить значение самого выражения: оно состоит из нескольких слагаемых, каждое из которых записано через степень числа 4. Например, первый член 3 ⋅438  означает, что берётся число  38
4  и умножается на 3, второй член    23
2⋅4  аналогично даёт     23
2 ⋅4  , затем добавляются  20
4  , 3 ⋅45  , 44  и 1. Все эти слагаемые складываются, и мы получаем итоговое число, которое сохраняем в переменной s. Далее мы должны преобразовать это число в систему счисления с основанием 16. Для этого мы используем строку alph = ’0123456789ABCDEF’, где последовательно записаны все символы, которые используются в шестнадцатеричной системе. После этого мы начинаем цикл, в котором берём остаток от деления текущего числа s на 16 (операция s % 16), чтобы найти последнюю цифру в шестнадцатеричной записи, и с помощью индексации обращаемся к соответствующему символу в строке alph. Так мы находим символ для текущей цифры и добавляем его в начало результирующей строки hexed. Затем делим число s нацело на 16 (операция s //= 16), чтобы отбросить уже найденную цифру, и продолжаем цикл, пока число не станет равным нулю. В итоге строка hexed будет содержать полную шестнадцатеричную запись исходного выражения. Последний шаг — подсчитать количество нулей в этой строке. Для этого используем метод hexed.count(’0’), который возвращает количество символов ’0’ в строке hexed. Полученное число и будет ответом задачи.

# Вычисляем значение выражения: складываем несколько степеней числа 4,
# умноженных на коэффициенты, и добавляем 1
s = 3 * 4 ** 38 + 2 * 4 ** 23 + 4 ** 20 + 3 * 4 ** 5 + 4 ** 4 + 1

# Строка, содержащая все символы шестнадцатеричной системы счисления:
# от "0" до "9" и далее "A", "B", "C", "D", "E", "F"
alph = "0123456789ABCDEF"

# Переменная для хранения шестнадцатеричной записи числа
hexed = ""
# Цикл, пока число s больше нуля
while s > 0:
    # Остаток от деления числа на 16 даёт индекс нужной цифры
    # Находим символ в строке alph и добавляем его в начало записи
    hexed = alph[s % 16] + hexed
    # Делим число нацело на 16, убирая последнюю цифру
    s //= 16

# Считаем количество нулей в строке hexed
print(hexed.count("0"))



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