Unverified Commit 446275bc authored by CaoBowen's avatar CaoBowen Committed by GitHub
Browse files

Update bignum.md

parent 4c4010e4
Loading
Loading
Loading
Loading
+32 −3
Original line number Diff line number Diff line
@@ -274,7 +274,36 @@ void sub(int a[LEN], int b[LEN], int c[LEN]) {

试一试,输入 `1 2` ——输出 `/9999999` ,诶这个 OI Wiki 怎么给了我一份假的代码啊……

如你所见,上面的程序只能处理 $a \geq b$ 的情况,至于负数如何处理——就交给聪明的你啦。
其实处理被减数比减数小的情况很简单。

$$
当x<0时,\left| x \right|=-x
$$

$\because$当a<b时,(a-b)<0。
$$
\therefore \left|a-b\right|=-(a-b)
$$
$\because​$只有符号不同的两个数互为相反数。

又$\because$这里的绝对值运算只是将负号变为正号。
$$
\therefore a-b=-\left|a-b\right|
$$

$$
-\left|a-b\right|=-\left[-\left(a-b\right)\right]
$$

$$
-\left[-\left(a-b\right)\right]
=-\left[-a+b\right]
=-[b-a]
$$

答案~~并不~~简单明了,如果你看不懂数学公式,就来一个简单粗暴的:

交换a和b的值并正常减法运算,然后在得数前加上负号!

### 乘法