![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
快速幂
小兔崽崽!
我还年轻!!!
展开
-
帮我求算一下斐波那契数吧(矩阵快速幂)
思路:这道题的n非常大,如果直接暴力写的话肯定会超时,所以这道题要用到矩阵快速幂的知识。 对于斐波那契数列,可以用上述矩阵来求Fn的值。 #include <bits/stdc++.h> using namespace std; const int num = 2; const long long mod = 1000000007; struct mat { long long m[num][num]; }; mat I{ //定义了一个单位矩阵。 1,0, 0,1..原创 2020-08-05 09:27:33 · 116 阅读 · 0 评论 -
人见人爱A^B (快速幂)
思路:这道题因为b的范围比较小,所以直接暴力也可以做,就是记得每次循环中都要求余1000,当b的范围大的时候就要用快速幂做了。 1.暴力: #include <bits/stdc++.h> using namespace std; int a,b; int main(){ while(cin>>a>>b){ if(a==0&&b==0) break; int ans = 1; for(int i=1.原创 2020-08-04 16:29:16 · 200 阅读 · 0 评论 -
Mathematical Practice (快速幂)
思路:该题就是从一个大小为 的集合中,有顺序地取 次子集,求这些子集两两没有交集的方案数。 首先可以发现这个n和m的范围还是蛮大的,直接暴力肯定不行,那么就用快速幂来算我们要的结果。 #include <bits/stdc++.h> using namespace std; int mod = 998244353; int ans; int fast_power(long long base,long long power,long long mod){ long long re..原创 2020-11-17 19:03:41 · 383 阅读 · 2 评论 -
快速幂
快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法之所以时间复杂度非常高(为O(指数n)),就是因为当指数n非常大的时候,需要执行的循环操作次数也非常大。所以我们快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。 long long fastPower(long long base, long long power,long long mod) { long long result原创 2020-08-04 16:13:48 · 163 阅读 · 0 评论