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

14.02 Поиск основания системы счисления

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

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

Задача 1#5957

Решите уравнение: 3711 = 31x

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

Решение аналитически

Переведем обе части уравнения в десятичную систему счисления:

3711 = 7 ⋅ 110 + 3 ⋅ 111 = 40

          0       1
31x = 1 ⋅ x + 3 ⋅ x = 1 + 3x

Теперь решим новое линейное уравнение и найдем ответ:

40 = 1 + 3x

39 = 3x

x = 13

Значит, искомое основание равно 13.

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

for i in range(4, 36):
    if int("31", i) == int("37", 11):
        print(i)
        break

Ответ: 13

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

Задача 2#6441

Решите уравнение: 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

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

Задача 3#6442

Найдите наименьшее основание системы счисления, в которой десятичное число 79 имеет четырехзначную запись.

 

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

Решение руками:

Если запись числа четырехзначна, максимальное значение числа равно  4
x  − 1  , где переменная - основание системы счисления. Это можно увидеть на примере с десятичной системой счисления. Максимальное четырехзначное число: 104 − 1 = 10000 −  1 = 9999  , максимальное трехзначное число: 103 − 1 = 1000 −  1 = 999  . Аналогично перебираем другие системы счисления, удовлетворяющие условию задачи:
Двоичная:  4
2 − 1 =  15  , слишком мало, запись числа 79 будет состоять более, чем из четырех цифр.
Троичная: 34 − 1 = 80  . Значит, искомое значение – 3. Для проверки переведем 79 в троичную систему счисления: 7910 = 2 ⋅ 33 + 2 ⋅ 32 + 2 ⋅ 31 + 1 ⋅ 30 = 22213   .

 

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

for i in range(2, 20):
    x = 79
    x_new = ""
    while x > 0:
        x_new = str(x % i) + x_new
        x //= i
    if len(x_new) == 4:
        print(i)
        break

Ответ: 3

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

Задача 4#20959

В какой системе счисления число 1710  записывается как 101  ? В ответ запишите основание системы счисления.

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

Решение руками:

Пусть основание нашей системы счисления это x  . Тогда 101x = 1 ⋅x2 + 1 = 17  , откуда следует, что x = 4  .

 

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

for i in range(2, 20):
    x = 17
    x_new = ""
    while x > 0:
        x_new = str(x % i) + x_new
        x //= i
    if x_new == "101":
        print(i)
        break

Ответ: 4

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

Задача 5#20962

Решите уравнение 2305 = 145x  .

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

Решение руками

Переведем обе части уравнения в десятичную систему счисления.

Слева получим: 230  = 2⋅52 + 3 ⋅51 + 0⋅50 = 50 + 15 = 65
  5

Справа получим           2      1     0    2
145x = 1⋅x + 4 ⋅x  + 5⋅x  = x + 4x+ 5

Решим уравнение x2 +4x + 5 = 65

x2 + 4x − 60 = 0

(x− 6)⋅(x +10) = 0

Получается, либо x = 6  , либо x = − 10  . Так как основание СС не может быть отрицательным, ответ 6  .

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

# Функция int умеет переводить числа максимум из 36-ричной СС,
# так что перебираем до 36 включительно

# Так как в числе 145 наибольшая цифра 5 - основание системы счисления x должно быть больше 5
# Поэтому перебор начнём с 6
for x in range(6, 36 + 1): # Перебираем основание системы счисления

    # Переводим оба числа в 10-ричную систему счисления
    a = int("230", 5)
    b = int("145", x)
    if a == b: # Если оба числа равны в 10-ричной системе счисления
        print(x) # Выводим искомое основание

Ответ: 6

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

Задача 6#25906

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

N 25 − 2⋅N 13 + 10

записали в системе счисления с основанием N  . Определите основание системы счисления, если известно, что сумма разрядов в числе, представленном в этой системе счисления, равна 75  .

Показать ответ и решение
for n in range(2, 10):
    # Перебор начинаем с 2 т.к.
    # при делении на 1 получается бесконечный цикл
    s = n**25 - 2*n**13 + 10
    summ = 0
    while s > 0:
        summ += s % n
        s //= n
    if summ == 75:
        print(n)

Ответ: 7

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

Задача 7#25987

Определите число N  , для которого выполняется равенство 214N = 165N+1  .

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

Решение руками

Для начала нужно оба числа перевести в 10-ричную систему счисления.
214  = 2⋅N 2 + 1 ⋅N1 + 4⋅N 0 = 2N 2 + N + 4
   N
                  2           1           0     2                          2
165N+1 = 1⋅(N + 1) + 6⋅(N + 1) + 5⋅(N + 1) = (N  + 2N + 1)+ (6N + 6)+ 5 = N + 8N + 12

Теперь решим уравнение:
   2           2
2N  + N + 4 = N  + 8N + 12
N 2 − 7N − 8 = 0
D = 49 + 32 = 81
     7+9
N1 =  2  = 8
N2 = 7−29 = − 1

Основание системы счисления должно быть положительным числом, так что в ответ берём число 8.

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

# В числе 214 - наибольшая цифра 4, значит N >= 5
# В числе 165 - наибольшая цифра 6, значит N+1 >= 7 (то есть N >= 6)
# Таким образом, будем перебирать N, начиная с 6

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

    # Переводим оба числа в 10-ричную систему счисления
    a = int("214", N)
    b = int("165", N+1)
    if a == b: # Если оба числа равны в 10-ричной системе счисления
        print(N) # Выводим искомое основание N

Ответ: 8

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

Задача 8#51477

Найдите основание системы счисления, в которой выполнено сложение: 124x + 16x = 141x  .

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

Решение руками

Для начала нужно все числа перевести в 10-ричную систему счисления.
124  = 1⋅x2 + 2 ⋅x1 + 4⋅x0 = x2 + 2x+ 4
   x
         1      0
16x = 1⋅x + 6 ⋅x = x +6
141x = 1⋅x2 + 4 ⋅x1 + 1⋅x0 = x2 + 4x+ 1

Теперь решим уравнение:
(x2 + 2x + 4)+ (x + 6) = (x2 + 4x +1)
x2 + 3x + 10 = x2 + 4x+ 1
x = 9

Таким образом, ответом является число 9.

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

for x in range(17):
    a = x ** 2 + 2 * x + 4
    b = x + 6
    c = x ** 2 + 4 * x + 1
    if a + b == c:
        print(x)

Ответ: 9

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

Задача 9#51478

В системе счисления с основанием N запись числа 223 оканчивается на 6 и содержит не более двух цифр. Чему равно минимальное число N?

Показать ответ и решение
for n in range(2, 50):
    x = 223
    s = ""
    while x > 0:
        s = str(x % n) + s
        x = x // n
    if len(s) <= 2 and s[-1] == "6":
        print(n)
        break

Ответ: 31

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

Задача 10#57748

Найдите основание системы счисления, в которой выполнено сложение: 116x + 21x = 140x  .

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

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

for x in range(10):
    f = 1 * x ** 2 + 1 * x + 6
    s = 2 * x + 1
    if f + s == 1 * x ** 2 + 4 * x:
        print(x)

Ответ: 7

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

Задача 11#57749

Решите уравнение 84x = 1648  . Ответ запишите в десятичной системе счисления.

Показать ответ и решение
for x in range(20):
    # Переводим в 10 с.с.
    n = 8*x + 4
    if n == 1*8**2 + 6*8 + 4:
        print(x)

Ответ: 14

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

Задача 12#60027

В системе счисления с основанием p выполняется равенство

x3x +21y = xyyx

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

Показать ответ и решение
a = ’0123456789ABCDEF’
for p in range(4, 16):
    for x in range(p):
        for y in range(p):
            x1 = a[x]
            y1 = a[y]
            m1 = x1 + ’3’ + x1
            m2 = ’21’ + y1
            n1 = x1 + 2 * y1 + x1
            m = int(m1, p) + int(m2, p)
            n = int(n1, p)
            if m == n:
                print(p)

Ответ: 4

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

Задача 13#60727

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

N25 − 2 ∗N 13 + 10

записали в системе счисления с основанием N. Определите основание системы счисления, если известно, что сумма разрядов в числе, представленном в этой системе счисления, равна 75.

Показать ответ и решение
for n in range(2, 11):
    a = n**25 - 2*n**13 + 10

    s = ""
    while a > 0:
        s = str(a % n) + s
        a = a // n

    sm = 0
    for i in s:
        sm += int(i)

    if sm == 75:
        print(n)

Ответ: 7

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

Задача 14#72424

Значение выражения 67 ⋅1463 + 28123 + 47 ⋅42210 − 349564  записали в некоторой системе счисления.

Оказалось, что количество цифр 7 в этой записи максимально.

Найдите эту систему счисления и запишите её в ответе в десятичной системе счисления. Если таких несколько, укажите ту, у которой числовое значение больше.

Показать ответ и решение
x = 67*14**63 + 28**123 + 47*42**210 - 349564
mx_c = 0
ans = 0
for i in range(8,17):
    c = 0
    n = x
    while n > 0:
        if n % i == 7:
            c += 1
            if c >= mx_c:
                mx_c = c
                ans = i
        n //= i
print(ans)

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