大数字的最后一位数字(Last digit of a large number) ——大数取模
题目:
- 题目很简单,给出
a,b
两个数字,计算 ab a b 的最后一位数字。 - 例如:
a=2,b=4
, ab=24=16 a b = 2 4 = 16 ,故16的最后一位数字应该是6
思路:
- 对于小数,直接计算然后取模(%10)就可以了
- 但是对于大数,往往就会计算不出来或者十分费时。
- 想了很久,做了很多尝试方案,发现都是时间爆栈了。。
- 后来百度了下才发现这个叫快速幂取模。。。可怜楼主没有ACM经验,数学数论也不行。。。
- 那我们直接根据快速幂取模的方法计算就可以了。
讲解快速幂取模:
首先有如下公式:
a∗b%m=[(a%m)∗(b%m)]%m a ∗ b % m = [ ( a % m ) ∗ ( b % m ) ] % m
其证明过程如下:
a=a1∗