快速幂算法详解
一、问题
如果有三个整数a,n,k
,要让我们求出a^n
的后k
位,你会怎么求?
也许有人可能会想到直接将a^n次求出,然后通过取余求出后k位
但显然,这样是不现实的,因为我们知道当这个数很大时,即使是long long
型的变量也存放不下。
二、前置知识
当我们解决问题之前,首先来看一下,我们需要了解的一些知识。
三、解决问题
解决一个问题的最好方法,往往是从实例中应用,所以我们不妨假设a = 3, n = 45
此外,如果计算机基础较好的读者很容易得到45 = (101101)2
于是,我们可以得到如下推导
我们可以发现,如果最后一步中每一项去掉*后面的乘数,则每一项的值都为后一项的平方
四、代码实现
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!