【矩阵乘法】广义斐波那契数列
来源:互联网 发布:nike回到未来价格知乎 编辑:程序博客网 时间:2024/05/21 10:22
传送门:http://codevs.cn/problem/1574
这道题解法或许有很多吧
反正蒟蒻的我写了矩阵快速幂
第一次写矩阵乘法
先贴原理:
若两个矩阵A、B可进行矩乘,则需要A的列数和B的行数一致
若A为n行p列的矩阵,B为p行m列的矩阵
那么回到题目中
用矩阵表示数列的通项公式
由此
那么可以使用快速幂求解矩阵的幂
PS:建议定义矩阵的结构体并重载乘法
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define LL long longLL p,q,x,y,n,m;struct matrix{ LL s[4][4]; matrix(){ memset(s,0,sizeof s); } matrix operator * (const matrix &n) const { matrix c; for (int i=1;i<=3;++i) for (int j=1;j<=3;++j) for (int k=1;k<=3;++k) c.s[i][j]=(c.s[i][j]+s[i][k]*n.s[k][j])%m; return c; }}ans,k,l;matrix pow(matrix k,LL x){ if (x==1) return k; matrix u=pow(k,x>>1); if ((x&1)==1) return u*u*k; else return u*u;}int main(){ scanf("%lld%lld%lld%lld%lld%lld",&p,&q,&x,&y,&n,&m); k.s[1][1]=p; k.s[1][2]=q; k.s[2][1]=1; k.s[2][2]=0; l.s[1][1]=y; l.s[2][1]=x; ans=pow(k,n-2)*l; printf("%lld\n",ans.s[1][1]); return 0;}
0 0
- 洛谷1349 广义斐波那契数列 【矩阵乘法】
- Codevs 1574 广义斐波那契数列(矩阵乘法)
- 【矩阵乘法】广义斐波那契数列
- 斐波那契数列-矩阵乘法
- P1349 广义斐波那契数列(矩阵的应用)
- SSL 1529 斐波那契数列Ⅱ 矩阵乘法
- SSL 1530 斐波那契数列Ⅲ 矩阵乘法
- SSL 1531 斐波那契数列Ⅳ 矩阵乘法
- 矩阵乘法解fibonacci斐波那契数列
- 【u021】广义斐波那契数列
- P1349 广义斐波那契数列
- P1349 广义斐波那契数列
- [P1349]广义斐波那契数列
- 斐波那契数列三种实现+矩阵乘法+矩阵cimi
- 矩阵乘法 求斐波那契数列
- 矩阵乘法 求斐波那契数列
- 矩阵乘法求斐波那契数列
- 矩阵乘法求斐波那契数列
- ACM 水仙花数
- hdu 1226 超级密码 bfs+大整数对long取模
- Libevent 编程- 定时器事件(timer event)
- jQuery Mobile列表样式失效解决方案
- 第一次使用Git上传本地项目到github上
- 【矩阵乘法】广义斐波那契数列
- DCL给用户添加权限
- 1363
- 北大 AI 公开课第7讲:百度徐伟——AGI 2050年前实现可能性超50%
- RPC-<深入篇>
- 【C】c语言里常见的一些错误用法!!!!
- HashCode
- 找暑假实习生那些事
- php高并发秒杀