14.02 Поиск основания системы счисления
Ошибка.
Попробуйте повторить позже
Решите уравнение:
Решение аналитически
Переведем обе части уравнения в десятичную систему счисления:
Теперь решим новое линейное уравнение и найдем ответ:
Значит, искомое основание равно 13.
Решение программой
for i in range(4, 36): if int("31", i) == int("37", 11): print(i) break
Ошибка.
Попробуйте повторить позже
Решите уравнение:
Ответ запишите в троичной системе счисления.
Для удобства переведем все числа в десятичную систему счисления:
Теперь, когда все числа находятся в одной системе счисления, можем составить квадратное
уранение:;
Переведем искомое основание в троичную систему счисления: .
Решение программой
# В числе 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)
Ошибка.
Попробуйте повторить позже
Найдите наименьшее основание системы счисления, в которой десятичное число 79 имеет четырехзначную запись.
Решение руками:
Если запись числа четырехзначна, максимальное значение числа равно , где переменная -
основание системы счисления. Это можно увидеть на примере с десятичной системой счисления.
Максимальное четырехзначное число:
, максимальное трехзначное число:
. Аналогично перебираем другие системы счисления, удовлетворяющие
условию задачи:
Двоичная: , слишком мало, запись числа 79 будет состоять более, чем из четырех
цифр.
Троичная: . Значит, искомое значение – 3. Для проверки переведем 79 в троичную систему
счисления:
.
Решение программой:
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
Ошибка.
Попробуйте повторить позже
В какой системе счисления число записывается как
? В ответ запишите основание системы счисления.
Решение руками:
Пусть основание нашей системы счисления это . Тогда
, откуда следует, что
.
Решение программой:
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
Ошибка.
Попробуйте повторить позже
Решите уравнение .
Решение руками
Переведем обе части уравнения в десятичную систему счисления.
Слева получим:
Справа получим
Решим уравнение
Получается, либо , либо
. Так как основание СС не может быть отрицательным, ответ
.
Решение программой
# Функция 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) # Выводим искомое основание
Ошибка.
Попробуйте повторить позже
Значение арифметического выражения:
записали в системе счисления с основанием . Определите основание системы счисления, если известно, что сумма
разрядов в числе, представленном в этой системе счисления, равна
.
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)
Ошибка.
Попробуйте повторить позже
Определите число , для которого выполняется равенство
.
Решение руками
Для начала нужно оба числа перевести в 10-ричную систему счисления.
Теперь решим уравнение:
Основание системы счисления должно быть положительным числом, так что в ответ берём число 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
Ошибка.
Попробуйте повторить позже
Найдите основание системы счисления, в которой выполнено сложение: .
Решение руками
Для начала нужно все числа перевести в 10-ричную систему счисления.
Теперь решим уравнение:
Таким образом, ответом является число 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)
Ошибка.
Попробуйте повторить позже
В системе счисления с основанием 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
Ошибка.
Попробуйте повторить позже
Найдите основание системы счисления, в которой выполнено сложение: .
Решение программой:
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)
Ошибка.
Попробуйте повторить позже
Решите уравнение . Ответ запишите в десятичной системе счисления.
for x in range(20): # Переводим в 10 с.с. n = 8*x + 4 if n == 1*8**2 + 6*8 + 4: print(x)
Ошибка.
Попробуйте повторить позже
В системе счисления с основанием p выполняется равенство
Буквами 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)
Ошибка.
Попробуйте повторить позже
Значение арифметического выражения:
записали в системе счисления с основанием 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 в этой записи максимально.
Найдите эту систему счисления и запишите её в ответе в десятичной системе счисления. Если таких несколько, укажите ту, у которой числовое значение больше.
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)