Задача к ЕГЭ по информатике на тему «поиск основания системы счисления» №1

Решите уравнение: 1258 + 103 =  323x
Ответ запишите в троичной системе счисления.

Для удобства переведем все числа в десятичную систему счисления:
1258 =  5 ⋅ 80 + 2 ⋅ 81 + 1 ⋅ 82 = 5 ⋅ 1 + 2 ⋅ 8 + 1 ⋅ 64 = 5 + 16 + 64 = 8510
          0       1 103 = 0 ⋅ 3 + 1 ⋅ 3 = 0 ⋅ 1 + 1 ⋅ 3 = 310
            0      1       2                    2                2 323x =  3 ⋅ x + 2 ⋅ x + 3 ⋅ x = 3 ⋅ 1 + 2 ⋅ x + 3 ⋅ x = (3 + 2x + 3x )10
Теперь, когда все числа находятся в одной системе счисления, можем составить квадратное уранение:
85 + 3 = 3 + 2x + 3x2
   2 3x  + 2x − 85 =  0
      2 D  = 2  − 4 ⋅ 3 ⋅ (− 85) = 4 + 12 ⋅ 85 = 1024  ; √ --   D = 32

⌊  x =  −-2 +-32 = 30-=  5 |       2 ⋅ 3     6 ⌈     − 2 − 32     34  x =  --2-⋅ 3- = − -6-<  0,основан ие систем ы счисл ения не м ожет бы ть отри цатель &#x043D

Переведем искомое основание в троичную систему счисления:           1       0 510 = 1 ⋅ 3 + 2 ⋅ 3 = 123   .

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

# В числе 323 - наибольшая цифра 3, значит x >= 4

# Функция int умеет переводить числа максимум из 36-ричной СС,
# так что перебираем до 36 включительно для x
for x in range(4, 36 + 1):  # Перебираем основание системы счисления

    # Переводим числа в 10-ричную систему счисления
    a = int("125", 8)
    b = int("10", 3)
    c = int("323", x)
    if a + b == c:  # Если выполняется равенство
        st = ""  # Переменная для троичной записи основания x
        while x > 0:
            st = str(x % 3) + st
            x //= 3
        print(st)

Ответ: 12
Оцените статью
Я решу все!