N
Natka
Быстрое умножение длинных целых чисел
Главная идея быстрого умножения состоит в модификации выражения A×C×10N+(A×D+B×C)×10N/2+B×D таким образом, чтобы уменьшить количество операций умножения: A×C×10N+(AD+BC)×10N/2+B×D = A×C×10N+(A-B)×(D-C)×10N/2+B×D+(A×C+B×D)×10N/2. Видно, что теперь необходимо найти лишь три произведения N/2-значных чисел.
Задание.
1) Реализовать алгоритм сложения двух длинных целых чисел.
2) Реализовать алгоритм умножения двух длинных целых чисел.
3) Реализовать нерекурсивный алгоритм быстрого умножения.
а) в программе должен присутствовать механизм контроля используемой памяти (пиковый расход).
б) сделать модификацию алгоритма для перемножения чисел, разрядность которых не является степенью двойки.
4) Реализовать рекурсивный алгоритм быстрого умножения.
5) Написать тестовую программу для сравнения двух реализаций.
6) Написать тестовые программы для демонстрации правильности работы программ.
а) входные данные хранятся в файле mult.txt: в первой строке разрядность чисел, во второй и третьей - сами множители.
б) входные данные должны дублироваться на экране, результат перемножения тоже выводить на экран.
7) Разработать набор тестов для проверки правильности (включает не менее 10 тестовых случаев). Реализовать режим пакетной прогонки разработанных тестов.
Необходимо реализовать на С/С++. Помогите, пожалуйста!
Главная идея быстрого умножения состоит в модификации выражения A×C×10N+(A×D+B×C)×10N/2+B×D таким образом, чтобы уменьшить количество операций умножения: A×C×10N+(AD+BC)×10N/2+B×D = A×C×10N+(A-B)×(D-C)×10N/2+B×D+(A×C+B×D)×10N/2. Видно, что теперь необходимо найти лишь три произведения N/2-значных чисел.
Задание.
1) Реализовать алгоритм сложения двух длинных целых чисел.
2) Реализовать алгоритм умножения двух длинных целых чисел.
3) Реализовать нерекурсивный алгоритм быстрого умножения.
а) в программе должен присутствовать механизм контроля используемой памяти (пиковый расход).
б) сделать модификацию алгоритма для перемножения чисел, разрядность которых не является степенью двойки.
4) Реализовать рекурсивный алгоритм быстрого умножения.
5) Написать тестовую программу для сравнения двух реализаций.
6) Написать тестовые программы для демонстрации правильности работы программ.
а) входные данные хранятся в файле mult.txt: в первой строке разрядность чисел, во второй и третьей - сами множители.
б) входные данные должны дублироваться на экране, результат перемножения тоже выводить на экран.
7) Разработать набор тестов для проверки правильности (включает не менее 10 тестовых случаев). Реализовать режим пакетной прогонки разработанных тестов.
Необходимо реализовать на С/С++. Помогите, пожалуйста!