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

  • Общий подход

  • Возможные ловушки и проблемы

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

  • [::-1] разворот числа if x_N == : pass elif x_N[-1]== "2": print(i, end=",")

  • - основание от 3 до 21 (дальше перебирать нет смысла) if 23 % x == 2: print( x, end = , )

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


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

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


    Р-10. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 23 оканчивается на 2.

    Общий подход:

    • здесь обратная задача – неизвестно основание системы счисления, мы обозначим его через

    • поскольку последняя цифра числа – 2, основание должно быть больше 2, то есть

    • вспомним алгоритм перевода числа из десятичной системы в систему с основанием (см. презентацию), из него следует, что младшая цифра результата – это остаток от деления исходного числа на

    Решение:

    1. итак, нужно найти все целые числа , такие что остаток от деления 23 на равен 2, или (что то же самое)

    (*)

    где – целое неотрицательное число (0, 1, 2, …);

    1. сложность в том, что и , и неизвестны, однако здесь нужно «играть» на том, что это натуральные числа

    2. из формулы (*) получаем , так что задача сводится к тому, чтобы найти все делители числа 21, которые больше 2

    3. в этой задаче есть только три таких делителя: и

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

    Возможные ловушки и проблемы:

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

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

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

    x = 23 # число по условию

    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]== "2":

    print(i, end=",")

    1. Ответ: 3, 7, 21.

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

    1. полная программа:

    for x in range(3, 22): # x - основание от 3 до 21

    # (дальше перебирать нет смысла)

    if 23 % x == 2:

    print( x, end = ',' )

    1. Ответ: 3, 7, 21.
    1   ...   6   7   8   9   10   11   12   13   14


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