Loading docs/math/bignum.md +32 −3 Original line number Diff line number Diff line Loading @@ -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的值并正常减法运算,然后在得数前加上负号! ### 乘法 Loading Loading
docs/math/bignum.md +32 −3 Original line number Diff line number Diff line Loading @@ -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的值并正常减法运算,然后在得数前加上负号! ### 乘法 Loading