Позиционные системы счисления
Скачать 0.83 Mb.
|
Ещё пример задания:Р-23. (М.В. Кузнецова) Значение арифметического выражения: 99 – 39 + 919 – 19 записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи? Решение: Приведём все числа к степеням тройки, учитывая, что 19=27-8=33-(2∙31+2∙30): 99 – 39 + 919 – 19= (32)9 – 39 + (32)19 – (33 – (2∙31 + 2∙30)) = 318 – 39 + 338 – 33 + 2∙31 + 2∙30 Перепишем выражение, располагая степени тройки в порядке убывания: 318 – 39 + 338 – 33 + 2∙31 + 2∙30 = 338 + 318 – 39 – 33 + 2∙31 + 2∙30 Сначала рассмотрим часть выражения, в которой имеется два расположенных подряд «минуса»: 318 - 39 ‑ 33: найдём разность двух крайних чисел: 318 – 33, в её троичной записи 18 – 3=15 «двоек» и 3 «нуля»; вычтем из этого числа значение 39: одна из «двоек» (на 10-й справа позиции) уменьшится на 1, остальные цифры не изменятся; итак, троичная запись разности 318 – 39 – 33 содержит 15 – 1=14 «двоек», одну «единицу» и 3 «нуля» Прибавим к полученному значению сумму: 2∙31 + 2∙30 = 223. В троичной записи результата два крайних справа нуля заменяются на «двойки», остаётся один ноль. Общее количество «двоек»: 14+2=16. Прибавление значения 338 не изменит количества «двоек» в троичном числе: слева от имеющихся цифр появятся ещё 38 – 18=20 «нулей» и одна «единица» – на 39-й справа позиции. Итак, результат, записанный в троичной системе, содержит 39 цифр. Его состав: 16 «двоек», 2 «единицы» (их позиции: 39-я и 10-я справа) и 21 «нуль» (39-16-2=21). Ответ: 16. Ещё пример задания:Р-22. Значение арифметического выражения: 98 + 35 – 9 записали в системе счисления с основанием 3. Сколько цифр «2» содержится в этой записи? Решение: приведём все слагаемые к виду 3N и расставим в порядке убывания степеней: 98 + 35 – 9 = 316 + 35 – 32 первое слагаемое, 316, даёт в троичной записи одну единицу – она нас не интересует пара 35 – 32 даёт 5 – 2 = 3 двойки Ответ: 3. Решение (программа, Б.С. Михлин): задача может быть решена с помощью программы на Python, где есть встроенная поддержка длинных чисел: x = 9**8+3**5-9 x3 = '' while x: x3 = str(x%3) + x3 x //= 3 print( 'Ответ:', x3.count('2') ) вариант без использования символьных строк: x = 9**8+3**5-9 count2 = 0 while x: if x % 3 == 2: count2 += 1 x //= 3 print( 'Ответ:', count2 ) Ответ: 3. Решение (электронные таблицы, Б.С. Михлин): эта конкретная задача может быть решена с помощью электронных таблиц Замечание. Электронные таблицы имеют ограничения при работе с длинными целыми числами. Например, Excel при вводе больших чисел заменяет все цифры после 15-го разряда на нули. Это легко проверить, введя в ячейку число с более чем 15-ю разрядами. Обычно электронные таблицы при этом переходят к экспоненциальному (научному) формату. Если число больше, чем 1015, то оно хранится как вещественное число (неточно). Это ограничивает использование электронных таблиц. В этой задаче заданное число меньше, чем 1015, поэтому использовать электронные таблицы можно. введём заданное число, заданное арифметическим выражением, в ячейку электронной таблицы: выполним алгоритм перевода числа в троичную систему: найдём в B1 остаток от деления числа на 3, а в A2 – частное: скопируем формулы из А2 и В1 вниз до того момента, когда частное станет равно 0 (это означает окончание процесса перевода): подсчитаем в столбце В число остатков, равных 2: Ответ: 3. в OpenOffice Calc нужно использовать такие формулы: в A2: =QUOTIENT(A1;3) в B1: =MOD(A1;3) в B19: =COUNTIF(B1:B18;2) |