Умножение больших чисел, которые хранятся в виде списков массивов типа символов - PullRequest
0 голосов
/ 07 марта 2019
 private ArrayList<Character> product(ArrayList<Character> list1, ArrayList<Character> list2) {
        int size1 = list1.size();
        int size2 = list2.size();
        ArrayList<Character> list3 = new ArrayList<Character>();
        ArrayList<Character> list4 = new ArrayList<Character>();
        for (int index = (size2 -1); index >= 0; index--) {
            int carryOver = 0;
            int charInt1 = (int) ( list2.get(index) -'0');
            int count = index;
            while(count > 0) {
                list3.add('0');
                count--;
            }
            for ( int key = 0; key < size1; key++) {
                int charInt2 = (int) ( list1.get(key) - '0');
                int product = (charInt1 * charInt2) + carryOver;
                char intChar = (char) ( (product % 10) + 48);
                list3.add(intChar);
                carryOver = product / 10;

            }
            if ( carryOver != 0) {
                char carryChar = (char) ( carryOver + 48);
                list3.add(carryChar);
            }

            list4 = sum (list3, list4);
            list3.clear();

        }
        return list4;
    }

Это для умножения больших чисел, которые хранятся в ArrayLists типа Character.Этот фрагмент кода не работает для таких случаев, как 32 * 32, 91 * 11. Метод sum работает отлично.

...