public string Multiply(string num1, string num2) { var a = new MyBigInt(num1); var b = new MyBigInt(num2); var result = a.Multiply(b); return(result.ToString()); }
public MyBigInt Multiply(MyBigInt secondOperator) { var sumsCount = secondOperator._list.Count; var multiplies = new MyBigInt[sumsCount]; for (int i = 0; i < sumsCount; i++) { multiplies[i] = this.Multiply(secondOperator._list[i]); } var result = new List <int>(); var r = 0; var digitsCount = sumsCount + multiplies[sumsCount - 1]._list.Count; for (int i = 0; i < digitsCount; i++) { var currentSum = r; var indexFound = false; for (int j = 0; j < sumsCount; j++) { var actualIndex = i - j; if (actualIndex >= 0 && actualIndex < multiplies[j]._list.Count) { currentSum += multiplies[j]._list[actualIndex]; indexFound = true; } } if (indexFound) { result.Add(currentSum % 10); r = currentSum / 10; } } AddRest(result, r); return(new MyBigInt(result)); }