Формулировка задания: Укажите наименьшее основание системы счисления, в которой запись числа K-значна.
Задание входит в ЕГЭ по информатике для 11 класса под номером 16 (Кодирование чисел. Системы счисления).
Рассмотрим, как решаются подобные задания на примере.
Пример задания:
Укажите наименьшее основание системы счисления, в которой запись числа 70 трехзначна.
Решение:
Решим задачу методом подбора: будем перебирать основания системы счисления, начиная с наименьшего (2), и переводить число 70 в каждую из этих систем счисления:
В двоичной, троичной и четвертичной системах счисления в числе больше 3 цифр. А в системе счисления с основанием 5 их ровно 3.
Таким образом, наименьшее основание системы счисления равно 5.
Ответ: 5
Поделитесь статьей с одноклассниками «Укажите наименьшее основание системы счисления, в которой запись – как решать».
При копировании материалов с сайта ссылка на источник обязательна. Уважайте труд людей, которые вам помогают.
Нашли ошибку? Выделите текст и нажмите Ctrl + Enter.
Всем привет! Нужно решить задачку на питоне. Важно, что списки использовать нельзя, функции тоже. “Половину” я уже сделал, определил основания обоих чисел. Дальше не могу без списков и функций. Вставляю свой код
Python | ||
|
Тут answ – основание первого числа, answ1 – второго числа. Почти на 100 процентов уверен в том, что работает))) Помогите, пожалуйста!
Условие задачи:
Не всякое число может являться записью в данной системе счисления. Например, 123 не может быть числом ни в двоичной, ни в троичной системе. Наименьшее основание системы счисления, в которой может быть записано это число – четыре.
Напишите программу, которая это и будет определять.
Вводятся два числа, записанных в разных, но неизвестных системах счисления. Для каждого из них нужно найти минимальное основание системы счисления, в которой это число может быть записано. Затем число в меньшей системе перевести в систему с большим основанием.
Гарантируется, что основания разные и не превышают 10.
Формат ввода
Два целых положительных числа.
Формат вывода
Целое число.
Пример 1
Ввод Вывод
123
214
102
Пример 2
Ввод Вывод
192
10010
18
Примечания
В задаче нельзя использовать списки, методы и функции.
Заранее спасибо.
Переведём все строки-числа в массивы со значениями их цифр. Запишем их задом-наперед. Более короткие дополним нулями:
A: 1A -> [10, 1]
B: 2 -> [ 2, 0]
C: 20 -> [ 0, 2]
Пройдемся слева направо имитируя сложение в столбик. Рассмотрим сумму младших разрядов: если бы переноса не возникло, то A[0] + B[0] == C[0]
. Это не так (10 + 2 != 0
). Значит есть перенос и A[0] + B[0] == base + C[0]
. Можно вычислить основание системы счисления.
В следующем разряде нужно учесть пришедший перенос: A[1] + B[1] + carry == C[1]
. Равенство выполнено, проверять основание не надо.
Продвигаясь по разрядам выполняем сложение в столбик. При каждом переносе проверяем основание – все переносы должны дать один результат. Кроме этого основание должно быть больше всех цифр в во всех трёх числах.
def read_number(s):
alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
return list(map(alphabet.index, reversed(s)))
def align(lists):
max_length = max(map(len, lists))
for l in lists:
l.extend([0] * (max_length - len(l)))
def determine_base(a, b, c):
align((a, b, c))
max_digit = max(a + b + c)
base = None
carry = 0
for ai, bi, ci in zip(a, b, c):
s = ai + bi + carry
if s < ci:
return -1
if s > ci:
if base is None:
base = s - ci
if base <= max_digit:
return -1
if s - ci != base:
return -1
carry = 1
else:
carry = 0
if carry != 0:
return -1
if base is None:
return max_digit + 1
return base
def main():
a, b, c = tuple(map(read_number, input().split()))
print(determine_base(a, b, c))
main()
Как решать задания данного типа из ЕГЭ по информатике?
Чему равно наименьшее основание позиционной системы счисления x,
при котором 225x = 405y, x и y – снования систем счисления?
Ответ записать в виде целого числа.
Встречал только задания, где в качестве неизвестной было основание только одной системы счисления. Пытался вводить функцию y(x)
и делать через производную – не получилось. Правильный ответ для данной задачи: x = 8.
-
Вопрос заданболее трёх лет назад
-
5546 просмотров
Пригласить эксперта
225x = 2∙x2 + 2∙x + 5 = 4∙y2 + 5 = 405y
2∙x2 + 2∙x = 4∙y2
ymin = max(4, 0, 5) + 1 = 6
2∙x2 + 2∙x = 4∙62 = 144
x2 + x – 72 = 0
D = 1 + 4*72 = 289
x1 = -(1 + 17)/2 = -9
x2 = -(1 – 17)/2 = 8
P.S. Можно и в более общем виде:
2∙x2 + 2∙x = 4∙y2
x2 + x – 2∙y2 = 0
D = 1 + 8∙y2
x1 = -(1 + sqrt(1 + 8∙y2))/2
x2 = -(1 – sqrt(1 + 8∙y2))/2
Надеюсь, все достаточно понятно написал.
-
Показать ещё
Загружается…
23 мая 2023, в 20:42
5000 руб./за проект
23 мая 2023, в 20:04
7000 руб./за проект
23 мая 2023, в 19:34
10000 руб./за проект
Минуточку внимания
Укажите наименьшее основание системы счисления, в которой запись десятичного числа 30 имеет ровно три значащих разряда.
Спрятать решение
Решение.
Составим уравнение для перевода числа в систему счисления.
где — разряды числа в системе счисления, числа в промежутке
Так как мы ищем наименьшее основание системы счисления, рассмотрим максимальные и Z, равные Перепишем уравнение: То есть, Будем искать не в точности n, ведь оно не будет натуральным, а n, близкие к решению этого уравнения. Возьмем наименьшее:
Переведем 30 в троичную систему счисления: Число четырёхзначно, это означает, что стоит взять систему счисления
Переведем 30 в четверичную систему счисления: это число трёхзначно, следовательно, ответом к этой задаче будет 4.