Использование списка для добавления BigInteger
Я реализую свой собственный класс BigInteger с использованием ArrayList и не уверен, как написать свой метод сложения.
public BigInt plus(BigInt operand){
//deep copy?
ArrayList<Byte> a = this.digit;
ArrayList<Byte> b = operand.digit;
ArrayList<Byte> sum = new ArrayList<>();
//code
return new BigInt();
}
Цель состоит в том, чтобы передать еще один BigInt, взять его Arraylist байтов и добавить его в Arraylist байтов текущего BigInt, но при этом, если значение сложения 2 байтов вместе, вы бы взяли '1' и добавили его к следующему байту в списке.
IE:
BigInt1 = "3,2,1,7"
BigInt2 = "1,4,3,5"
Добавление 7 и 5 создаст 12, поэтому 1 будет переноситься, а 2 будет в этом индексе для возвращенного BigInt.
Финальный BigInt должен быть
BigIntSum = "4,6,5,2"
У меня вопрос, как я могу перебрать эти списки, добавить байты и перенести число, если необходимо, и добавить это? Любая помощь с благодарностью. BigInt имеет конструктор, который может принимать строку, которая превращается в свой собственный ArrayList
1 ответ
Что -то вроде этого...
carry = 0
for i = bigInt1.Length - 1 to zero
sum = bigInt1[i] + bigInt2[i] + carry
if (sum > 10) {
sum = sum mod 10
carry = 1
else
carry = 0
endif
bigIntResult = sum
loop i
// after the loop, if carry == 1, then you have overflow and you need to lengthen bigIntResult