<1> 123456789*987654321 = ()
A: 121932631112635266 B: 121932621112635267
C: 121932631112635268 D: 121932631112635269
解答: 利用公式(ab)mod n = (a mod n)(b mod n)mod n,可以得到
123456789 X 987654321 mod 10 = (123456789 % 10) X (987654321%10) %10 = 9
在这里我们介绍以下三个公式:
(a+b)mod n = ((a mod n)+ (b mod n))mod n;
(a-b) mod n = ((a mod n )- (b mod n)+n)mod n;
ab mod n = (a mod n) (b mod n) mod n
注意,在减法中,由于a mod n 可能小于b mod n,需要在结果上加上n,而在乘法中,需要注意a mod n 和 b mod n相乘是否会溢出,因此这里要注意用long 型保存中间结果。像这样:
<2>大整数取模(sicily 1020)
这里要利用到公式:(a+b) mod (n) = (a mod n) + (b mod n) mod (n);
把大整数写成自左向右的形式:1234 = ((1*10+2)*10+3)*10+4,然后利用前面这个公式,每步取模,算法如下