51nod 1126 求递推序列的第N项(矩阵快速幂)
2016-11-06 18:23
239 查看
51nod 1126 求递推序列的第N项(矩阵快速幂)
注意:将给出数mod处理即可。
注意:将给出数mod处理即可。
#include <bits/stdc++.h> using namespace std; struct Maxtri{ int p[2][2]; }; Maxtri multi(Maxtri a, Maxtri b) { Maxtri c; memset(c.p,0,sizeof(c.p)); for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) for(int k = 0; k < 2; k++) c.p[i][j] = (c.p[i][j]+(a.p[i][k]*b.p[k][j]))%7; return c; } Maxtri quick_mi(Maxtri a,int n) { Maxtri b; for(int i = 0; i < 2; i++) b.p[i][i] = 1; while(n) { if(n&1) b = multi(b,a); a = multi(a,a); n >>= 1; } return b; } int main() { int n,a,b; scanf("%d%d%d",&a,&b,&n); Maxtri x,y,f,ans; x.p[0][0] = (a%7+7)%7; x.p[0][1] = (b%7+7)%7; x.p[1][0] = 1; x.p[1][1] = 0; y = quick_mi(x,n-2); f.p[0][0] = 1; f.p[1][0] = 1; f.p[0][1] = 0; f.p[1][1] = 0; ans = multi(y,f); printf("%d\n",ans.p[0][0]); return 0; }
相关文章推荐
- 51nod 1126 求递推序列的第N项(矩阵快速幂、循环)
- 51nod 1126 求递推序列的第N项 矩阵快速幂
- 51nod 1126 求递推序列的第N项【矩阵快速幂】
- 51Nod 1126 求递推序列的第N项 矩阵快速幂
- 51nod 1126 求递推序列的第N项 (矩阵快速幂)
- 【51nod 1126】求递推序列的第N项 【矩阵快速幂】or【枚举找循环节】
- 51 nod 1126 求递推序列的第N项(矩阵快速幂)
- 51 nod 1126 求递推序列的第N项 矩阵快速幂
- [51NOD]1126 求递推序列的第N项 [线性递推关系与矩阵乘法]
- 51nod 求递推序列的第N项(矩阵快速幂、模拟求循环长度)
- 51nod 1126 求递推序列的第N项
- 51nod 1126 求递推序列的第N项(循环节)
- 51nod 1126 求递推序列的第N项
- HDU-1005 Number Sequence && 51NOD-1126 求递推序列的第N项
- 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释
- 51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)
- 51nod-【1126 求递推序列的第N项】
- 51Nod-1126 求递推序列的第N项【递推序列+模除】
- 51Nod-1126-求递推序列的第N项
- 51NOD 1126求递推序列的第N项 模拟找循环节