
- •Длинная арифметика
- •Введение
- •1. Способы представления «длинных» чисел
- •2. Ввод-вывод "длинных" чисел
- •3. Сложение двух «длинных» чисел
- •4. Умножение «длинного» числа на «короткое»
- •5. Умножение «длинного» числа на «длинное»
- •6. Рекурсивный алгоритм умножения
- •7. Вычитание двух “длинных” чисел с учетом сдвига
- •8. Деление «короткого» числа на «короткое» столбиком
- •9. Деление «длинного» числа на «короткое» нацело с остатком
- •10. Сравнение двух “длинных” чисел
- •11. Задачи с решениями
- •12. Контрольные вопросы и упражнения
12. Контрольные вопросы и упражнения
-
Как определить, достаточно ли для точного решения задачи стандартных компьютерных типов данных, или вычисления придется организовывать самому, с помощью алгоритмов «длинной» арифметики?
-
Назовите преимущества и недостатки различных способов представления «длинных» чисел.
-
Напишите программу для решения задачи 2 из параграфа 7.
-
Решите задачу 3 из параграфа 7 для случая, когда основанием логарифма является дробное число 1,9, а в знаменателе вместо степеней тройки стоят степени числа 3,1. Значение суммы по-прежнему должно быть вычислено точно.
-
Реализуйте алгоритм сложения двух знаковых «длинных» чисел. Для этого замените k-разрядное отрицательное число т на его дополнение до числа 10k, то есть на число 10k-|т|. Сделать это можно по алгоритму, аналогичному алгоритму получения дополнительного кода отрицательного двоичного числа. Обратным кодом десятичного числа является замена каждой его цифры i на (9-i). К обратному коду нужно прибавить единицу, чтобы получить дополнительный код. Если отрицательные слагаемые заменить на их дополнительные коды, то для сложения можно применить процедуру Add, приведенную в параграфе 2.
-
Реализуйте алгоритм целочисленного деления с остатком «длинного» числа на «длинное».
В дальнейшем объяснении предусматривается, что читатель знает, как описываются данные, описание массивов и т.д., т.е. имеет навыки программирования и знаком с языком Turbo Pascal.