codevs 1250(矩阵快速幂)
2017-08-20 22:50
330 查看
传送门
求斐波那契数列,矩阵快速幂模板题。
求斐波那契数列,矩阵快速幂模板题。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; ll n,MOD; struct matrix { ll x[2][2]; matrix mult(matrix a,matrix b,ll MOD) { matrix c; memset(c.x,0,sizeof(c.x)); for (int i=0;i<2;++i) for (int j=0;j<2;++j) for (int k=0;k<2;++k) c.x[i][j]=(c.x[i][j]+a.x[i][k]*b.x[k][j]%MOD)%MOD; return c; } ll fpow(ll n,ll MOD) { matrix a,ans; a.x[0][0]=a.x[0][1]=a.x[1][0]=1,a.x[1][1]=0; ans.x[0][0]=ans.x[1][1]=1,ans.x[1][0]=ans.x[0][1]=0; while (n) { if (n&1) ans=ans.mult(ans,a,MOD); n>>=1,a=a.mult(a,a,MOD); } return ans.x[0][1]; } }; matrix FF; int main() { int kase; scanf("%d",&kase); while (kase--) { scanf("%lld%lld",&n,&MOD);++n; printf("%lld\n",FF.fpow(n,MOD)); } return 0; }
相关文章推荐
- 矩阵乘法快速幂 codevs 1250 Fibonacci数列
- Codevs 1250、1732 矩阵 快速幂
- 【codevs1250】Fibonacci数列,矩阵乘法入门
- <矩阵快速幂>codevs 3332 数列
- 矩阵乘法快速幂 codevs 1574 广义斐波那契数列
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
- codevs 3332 数列(矩阵快速幂)
- 【矩阵乘法】【codevs 1250】Fibonacci数列
- CODEVS1281 Xn数列 (矩阵乘法+快速乘)
- 【数论】矩阵快速幂&&CODE[VS] 1732
- Codevs_1166_[NOIP2007]_矩阵取数游戏_(动态规划+高精度)
- BZOJ_P2242&Codevs_P1565[SDOI2011]计算器(快速幂+扩展欧几里得+BSGS)
- 【CODEVS1287】矩阵乘法
- cf/Codeforces Round #373 div1-C/div2-E Sasha and Array 线段树 + 维护矩阵快速幂
- 【日常学习】【数学】【矩阵乘法】【大数乘方取模】codevs1982 加密算法题解
- 【矩阵乘】【DP】【codevs 1305】Freda的道路
- 矩阵前缀和 codevs 1373
- Vscode下快速开始编写html的方法
- neu1250矩阵快速幂哪~~
- 【日常学习】【高精快速幂】codevs1087 麦森数题解