快速幂
快速幂的核心思想是分治思想,底数每次自乘,这样求一个数的n次方只要logn次就可以算完,当n足够大的时候就可以减少很多的次数。基本思想是这个但是还涉及一个指数为奇数的情况。
直接贴上代码了。这个代码比直接递归或者递推那么分治都好,乘的次数更少,而且没有用%来判断奇数偶数,而是用了位运算,这样涉及到计算机底层计算二进制更快。
#include<iostream>
using namespace std;
typedef long long ll;
int poww(ll a,ll b)
{
ll ans = 1,base = a;
while(b)
{
if(b & 1)
ans *= base;
base *= base;
b >>= 1;
}
return ans;
}
int main()
{
cout<<poww(2,10);
return 0;
}
矩阵快速幂
矩阵快速幂计算思想和快速幂只是将乘法规则换成了矩阵乘法规则,至于应用,就是那个求斐波那契数列的经典题了,用到了矩阵快速幂,比递推更快。