Позиционные системы счисления
Скачать 0.83 Mb.
|
Еще пример задания:Р-12. Запись числа 38110 в системе счисления с основанием N оканчивается на 3 и содержит 3 цифры. Укажите наибольшее возможное основание этой системы счисления N. Решение: поскольку запись в системе счисления с основанием N заканчивается на 3, то остаток от деления числа 381 на N равен 3, то есть при некотором целом имеем следовательно, основание N – это делитель числа с другой стороны, запись числа содержит 3 цифры, то есть неравенство дает (так как ) неравенство дает (так как ) таким образом, ; в этом диапазоне делителями числа 378 являются числа 9, при получаем запись числа 14, при получаем запись числа 18, при получаем запись числа наибольшим из приведенных чисел – это 18 (можно было сразу искать подбором наибольший делитель числа 378, начиная с 19 «вниз», на уменьшение) таким образом, верный ответ – 18. Решение (программа на Python, А.Н. Носкин): можно решить задачу с помощью программы: for i in range(100,1,-1):# перебираем возможные основания x = 381 x_N = '' while x > 0:# перевод в N-ю систему if x%i>9:break # пропускаем цифры в виде букв else: x_N += str(x%i) x //= i x_N = x_N[::-1]# разворот числа if x_N == '': pass elif x_N[-1]== "3" and len(x_N) == 3: print(i) break ответ: 18. Решение (программа на Python, Б.С. Михлин): Если цифры больше девяти не представлять латинскими буквами, то программа даст неверный ответ 27, т.к. 381 в 27-ичной системе не (14)3, а E3 (т.е. двухзначное число) for N in range(36, 3, -1): # подбираем основание N от 36 до 4 x = 381 s = '' while x: d = x % N # цифра (digit) if d < 10: d = str( d ) # цифра от 0 до 9 else: d = chr( ord( 'A' ) + d - 10 ) # буквенная цифра от A до Z s = d + s # цифру d приписываем слева x //= N if s[-1] == '3' and len( s ) == 3: print( N ) break ответ: 18. |