Главная страница
Навигация по странице:

  • Решение (программа на Python , А.Н. Носкин): можно решить задачу с помощью программы: for i in range

  • [::-1] разворот числа if x_N == : pass elif x_N[-1]== "3" and len(x_N) == 3: print(i) break

  • Позиционные системы счисления


    Скачать 0.83 Mb.
    НазваниеПозиционные системы счисления
    Дата18.04.2022
    Размер0.83 Mb.
    Формат файлаdoc
    Имя файлаege14 3.doc
    ТипДокументы
    #483521
    страница8 из 14
    1   ...   4   5   6   7   8   9   10   11   ...   14

    Еще пример задания:


    Р-12. Запись числа 38110 в системе счисления с основанием N оканчивается на 3 и содержит 3 цифры. Укажите наибольшее возможное основание этой системы счисления N.

    Решение:

    1. поскольку запись в системе счисления с основанием N заканчивается на 3, то остаток от деления числа 381 на N равен 3, то есть при некотором целом имеем



    1. следовательно, основание N – это делитель числа

    2. с другой стороны, запись числа содержит 3 цифры, то есть

    3. неравенство дает (так как )

    4. неравенство дает (так как )

    5. таким образом, ; в этом диапазоне делителями числа 378 являются числа

      • 9, при получаем запись числа

      • 14, при получаем запись числа

      • 18, при получаем запись числа

    6. наибольшим из приведенных чисел – это 18 (можно было сразу искать подбором наибольший делитель числа 378, начиная с 19 «вниз», на уменьшение)

    7. таким образом, верный ответ – 18.

    Решение (программа на Python, А.Н. Носкин):

    1. можно решить задачу с помощью программы:

    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

    1. ответ: 18.

    Решение (программа на Python, Б.С. Михлин):

    1. Если цифры больше девяти не представлять латинскими буквами, то программа даст неверный ответ 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

    1. ответ: 18.
    1   ...   4   5   6   7   8   9   10   11   ...   14


    написать администратору сайта