public BigInt MultOnDigit(int n) // умножение на цифру 0, ...,9 { var sign = n; n = Math.Abs(n); var result = new BigInt('+', new List <int>()); var t = 0; int r; for (var i = this.number.Count - 1; i >= 0; i--) { r = this.number[i] * n + t; { t = r / 10; r %= 10; } result.SetDigit(i, r); } if (t != 0) { result.number.Insert(0, t); } result.DeleteNuls(); if ((this.sign == '+' && sign > 0) || (this.sign == '-' && sign < 0)) { return(result); } else { return(-result); } }
private static BigInt Reduce(BigInt a, BigInt b)//вычитает из большего меньшее два бигинта { if (a == b) { return(Zero); } if (b.sign == '-') { return(Addition(a, b)); } a.DeleteNuls(); b.DeleteNuls(); b.EqualizeTheDigits(a.number.Count); var res = new BigInt(); var num1 = new List <int>(a.number); var num2 = new List <int>(b.number); for (var i = a.number.Count - 1; i >= 0; i--) { var r = num1[i] - num2[i]; if (r < 0) { num1[i - 1]--; r = 10 + r; } res.SetDigit(i, r); } res.DeleteNuls(); return(res); }