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

  • Решение: приведём все слагаемые к виду 3 N и расставим в порядке убывания степеней: 9

  • =QUOTIENT(A1;3)

  • Решение (способ Е.А. Смирнова, Нижегородская область)

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

  • ЦУЙУ. Позиционные системы счисления


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

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


    Р-22. Значение арифметического выражения: 98 + 35 – 9

    записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи?

    Решение:

    1. приведём все слагаемые к виду 3N и расставим в порядке убывания степеней:

    98 + 35 – 9 = 316 + 35 – 32

    1. первое слагаемое, 316, даёт в троичной записи одну единицу – она нас не интересует

    2. пара 35 – 32 даёт 5 – 2 = 3 двойки

    3. Ответ: 3.

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

    1. задача может быть решена с помощью программы на Python, где есть встроенная поддержка длинных чисел:

    x = 9**8+3**5-9

    x3 = ''

    while x:

    x3 = str(x%3) + x3

    x //= 3

    print( 'Ответ:', x3.count('2') )

    1. вариант без использования символьных строк:

    x = 9**8+3**5-9

    count2 = 0

    while x:

    if x % 3 == 2:

    count2 += 1

    x //= 3

    print( 'Ответ:', count2 )

    1. Ответ: 3.

    Решение (электронные таблицы, Б.С. Михлин):

    1. эта конкретная задача может быть решена с помощью электронных таблиц

    2. Замечание. Электронные таблицы имеют ограничения при работе с длинными целыми числами. Например, Excel при вводе больших чисел заменяет все цифры после 15-го разряда на нули. Это легко проверить, введя в ячейку число с более чем 15-ю разрядами.

    Обычно электронные таблицы при этом переходят к экспоненциальному (научному) формату. Если число больше, чем 1015, то оно хранится как вещественное число (неточно). Это ограничивает использование электронных таблиц. В этой задаче заданное число меньше, чем 1015, поэтому использовать электронные таблицы можно.

    1. введём заданное число, заданное арифметическим выражением, в ячейку электронной таблицы:



    1. выполним алгоритм перевода числа в троичную систему: найдём в B1 остаток от деления числа на 3, а в A2 – частное:



    1. скопируем формулы из А2 и В1 вниз до того момента, когда частное станет равно 0 (это означает окончание процесса перевода):



    1. подсчитаем в столбце В число остатков, равных 2:



    1. Ответ: 3.

    2. в OpenOffice Calc нужно использовать такие формулы:

    в A2: =QUOTIENT(A1;3)
    в B1: =MOD(A1;3)

    в B19: =COUNTIF(B1:B18;2)

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


    Р-21. Сколько значащих нулей в двоичной записи числа
    4512 + 8512 – 2128 – 250

    Решение (способ Е.А. Смирнова, Нижегородская область):

    1. Общая идея: количество значащих нулей равно количеству всех знаков в двоичной записи числа (его длине!) минус количество единиц

    2. приведём все числа к степеням двойки, учитывая, что 250 = 256 – 4 – 2 = 28 – 22 – 21:

    4512 + 8512 – 2128 – 250 = (22)512 + (23)512 – 2128 – 28 + 22 + 21 =

    = 21536 + 21024 – 2128 – 28 + 22 + 21

    1. старшая степень двойки – 21536, двоичная запись этого числа представляет собой единицу и 1536 нулей, то есть, состоит из 1537 знаков; таким образом, остаётся найти количество единиц

    2. вспомним, число 2N2K при K < N записывается как N–K единиц и K нулей:

    3. для того чтобы использовать это свойство, нам нужно представить заданное выражение в виде пар вида 2N2K, причём в этой цепочке степени двойки нужно выстроить по убыванию

    4. в нашем случае вы выражении

    21536 + 21024 – 2128 – 28 + 22 + 21

    стоит два знака «минус» подряд, это не позволяет сразу использовать формулу

    1. используем теперь равенство , так что – 2128 = – 2129 + 2128; получаем

    21536 + 21024 – 2129 + 2128 – 28 + 22 + 21

    здесь две пары 2N2K , а остальные слагаемые дают по одной единице

    1. общее число единиц равно 1 + (1024 – 129) + (128 – 8) + 1 + 1 = 1018

    2. таким образом, количество значащих нулей равно 1537 – 1018 = 519

    3. ответ: 519.

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

    1. если доступна среда программирования на Python, можно написать программу, которая использует встроенную арифметику длинных чисел:

    x = 4**512 + 8**512 - 2**128 - 250

    print( bin(x)[2:].count('0') )

    1. ответ: 519.
    1   2   3   4   5   6   7   8   9   ...   15


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