贡献者: 待更新
快速幂算法和前缀和算法的作用一样,都是优化某些操作的时间复杂度。所以快速幂算法就是可以很快速的:求
数据范围:
根据数据范围可知朴素做法会超时,但是可不可以用 pow
函数来做呢?
答案是不行的。
因为 pow
函数得到的值是 double
类型,有效数字只有
如果
又因为:
所以我们可以通过上一次计算的结果来计算下一次计算的结果。 这公式这么复杂,到底怎么理解呢?手动模拟一下就可以啦!
例子:求
让我们把值代入到公式中看看:
如果
四者相加为:
这样一来,第一个式子就可以理解了。
让我们来理解第二个式子。
因为:
因为第三项和第四项的值为
这样一来,第一个公式和第二个公式我们就都搞懂了,这样有助于帮助我们理解快速幂。
时间复杂度:
因为
所以时间复杂度为:
C++ 代码:
代码具体的理解我们可以看看下图:
友情链接: 超理论坛 | ©小时科技 保留一切权利