Математические функции на числа разбиты на связанные списки в Java - PullRequest
0 голосов
/ 04 марта 2012

У меня есть два больших числа, скажем, 123 456 789 и 987 654 321, каждый из которых разбит на сегменты по три в узлы связанного списка (в виде целых чисел),] [123] [456] [789]] и [[987] [654][321]] и мне нужно выполнять над ними математические функции (складывать, вычитать, умножать, делить).

Я в полной растерянности относительно того, как я могу их выполнять, пока числа еще не разделены.Я также не уверен, как правильно управлять переносами (например, 999 + 11 = 1010, число, разделенное на два узла)
Числа должны оставаться в наборах по три для целей задачи, как это должно быть в состояниидля обработки чисел, выходящих за рамки int или других числовых классификаций.

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Помните алгоритмы, которые вы изучили в начальной школе (до того, как узнали, что такое «алгоритм») для выполнения арифметических операций над многозначными числами?

Это в основном то, что вам нужно реализовать здесь. За исключением того, что вы эффективно работаете на базе 1000 вместо базы 10.

Например, чтобы реализовать сложение, начните с добавления первого узла (цифры) каждого номера. Ответ не обязательно будет соответствовать одному узлу, но он будет меньше, чем удвоенная емкость, поэтому он не вызовет переполнения. Разделите это число на основание (1000) и удерживайте остаток (используя оператор %). Поместите остаток в первый узел суммы.

Затем перейдите к следующему узлу. При добавлении этого узла к каждому номеру также добавьте результат деления из предыдущего шага. (Это несущая часть.) Повторите этот процесс для всех узлов.

Вы можете аналогичным образом перевести все операции из арифметических алгоритмов начальной школы. Удачи!

0 голосов
/ 04 марта 2012

Используйте java.math.BigInteger вместо связанного списка.http://www.roseindia.net/java/java-biginteger/java-biginteger.shtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...