Статья Автор: Деникина Н.В., Деникин А.В.

1.1 Дробные системы счисления — последние цифры как остаток по модулю

Последние цифры — это остаток

У целого числа X, записанного в системе p, последние m цифр — это в точности остаток X по модулю pm, записанный m цифрами (при необходимости с ведущими нулями). Причина простая: старшие разряды весят pm и больше, то есть делятся на pm нацело и на остаток не влияют.

последние 1 цифра в 16-ричной  ->  X mod 16
последние 2 цифры в 16-ричной  ->  X mod 256
последние 3 цифры в 8-ричной   ->  X mod 512

Мост к дробям

В прошлой тетради мы выяснили: цифры после запятой у (M / pk)N — это цифры целого MN, прижатые вправо. Прижаты вправо — значит последние цифры дроби и последние цифры целого MN это одно и то же. Складываем два факта:

последние m цифр записи (0,d1...dk)N = MN mod pm

Задача про дробь превратилась в задачу про остаток. Это и есть тот самый аналитический шаг, без которого программа бессильна: возвести 171 в степень миллиард нельзя, а взять остаток — можно.


▶ Запустите. Первая строка считается мгновенно, хотя показатель — миллиард.



Программа печатает:

1
01

Функция pow с тремя аргументами не строит огромное число: она возводит в степень по модулю, беря остаток на каждом шаге. Закомментированная строка не отработала бы никогда — у числа 1711000000000 примерно 1,8 миллиарда шестнадцатеричных цифр.



Программа печатает:

3B
23
341

Заметьте, ответ выводится ровно m цифрами. Ведущий ноль в ответе — не украшение: «01» и «1» это разные ответы, и на олимпиаде второй не засчитают.


Запишите две последние цифры шестнадцатеричной записи числа (0,AB16)5. Ровно две цифры подряд, заглавными буквами.


Какое выражение даст две последние шестнадцатеричные цифры числа (0,AB16)N при N = 109?


Какая цифра стоит последней в восьмеричной записи числа (0,538)1000?


Сопоставьте вопрос и модуль, по которому нужно считать остаток.


Верно или неверно?


Итог: любой вопрос про хвост записи сводится к остатку. Но на олимпиаде показатель бывает такой, что и pow посчитать негде — например, его дают в виде 20 000 000 000. Тогда работает следующий приём: период.

Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать