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

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

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

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


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

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


    Р-15. Решите уравнение .
    Ответ запишите в шестеричной системе счисления. Основание системы счисления указывать не нужно.


    Решение:

    1. удобнее всего перевести все числа в десятичную систему, решить уравнение и результат перевести в шестеричную систему

    2. получаем

    3. уравнение приобретает вид , откуда получаем

    4. переводим 15 в шестеричную систему счисления:

    5. ответ: 23.

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

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

    a = int('60', 8 ) # перевод "60" в 10-ю систему

    b = int('120', 7 ) # перевод "120" в 10-ю систему

    x = b - a # число Х в 10-й системе

    x6 = ''

    while x > 0:# перевод в 6-ю систему

    x6 += str(x%6)

    x //= 6

    x6 = x6[::-1]# разворот числа

    print(x6)

    1. ещё один вариант программы (Б.С. Михлин):

    x = int( '120', 7 ) - int( '60', 8 )

    print('в 10 c.c:', x)

    s = ''

    while x:

    s = str( x%6 ) + s

    x //= 6

    print( 'Ответ в 6 с.с:', s )

    1. ответ: 23.

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


    Р-14. Запись десятичного числа в системах счисления с основаниями 3 и 5 в обоих случаях имеет последней цифрой 0. Какое минимальное натуральное десятичное число удовлетворяет этому требованию?

    Решение:

    1. если запись числа в системе счисления с основанием N заканчивается на 0, то это число делится на N нацело

    2. поэтому в данной задаче требуется найти наименьшее натуральное число, которое делится одновременно на 3 и на 5, то есть, делится на 15

    3. очевидно, что это число 15.

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

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

    for i in range(1,100):

    x = i

    x3 = ''

    while x > 0:# перевод в 3-ю систему

    x3 += str(x%3)

    x //= 3

    x3 = x3[::-1][-1]# последняя цифра числа

    x = i

    x5 = ''

    while x > 0:

    x5 += str(x%5)

    x //= 5

    x5 = x5[::-1][-1]

    if x3 == "0" and x5 == "0":

    print(i)

    break

    1. ответ: 15.

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

    1. Используется тот факт, что последняя цифра в записи числа в системе счисления с основанием N – это остаток от деления этого числа на N:

    for x in range(1,101): # ищем решение от 1 до 100

    if x%3 == x%5 == 0: # 'and' можно не использовать

    print(x)

    break

    1. ответ: 15.

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


    Р-13. Запись числа 6710 в системе счисления с основанием N оканчивается на 1 и содержит 4 цифры. Укажите основание этой системы счисления N.

    Решение:

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



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

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

    3. выпишем кубы и четвертые степени первых натуральных чисел, которые являются делителями числа 66:



    1. видим, что из этого списка только для числа N = 3 выполняется условие

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

    3. можно сделать проверку, переведя число 67 в троичную систему 6710 = 21113

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

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

    for i in range(2,37):# перебираем возможные основания

    x = 67

    x_N = ''

    while x > 0:# перевод в N-ю систему

    x_N += str(x%i)

    x //= i

    x_N = x_N[::-1]# разворот числа

    if x_N[-1]== "1" and len(x_N) == 4:

    print(i)

    break

    1. ответ: 3.

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

    1. Если при переводе из 10-й в N-ю систему счисления очередную полученную цифру дописывать слева к найденным ранее цифрам (т.е. так, как мы и делаем при ручном переводе), то не нужен будет разворот числа.

    2. Для i > 10 надо учитывать, что цифра может быть буквой.

    3. Верхняя граница основания 99 в цикле for i завышена. Арабских цифр и латинских букв хватит только для оснований до 10+26=36. Далее нет общепринятых правил обозначения цифр (если хотим получать N-ичное представление числа).

    for N in range(2, 37): # подбираем основание от 2 до 36

    x = 67

    s = '' # в s будет представление числа в N-ичной системе

    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 приписываем слева к s

    x //= N

    if s[-1] == '1' and len( s ) == 4:

    print( N )

    break

    1. возможен второй вариант: без представления всего числа в N-й системе счисления; здесь можно брать основание больше 36.

    for N in range(2, 101): # подбираем основание от 2 до 100

    x = 67

    k = 0 # счетчик цифр (разрядов) N-ичного числа

    while x:

    d = x % N # очередная цифра (digit)

    k += 1

    if k == 1: d0 = d # d0 - младшая цифра

    x //= N

    if d0 == 1 and k == 4:

    print( N )

    break

    1. ответ: 3.
    1   2   3   4   5   6   7   8   9   10   ...   14


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