斐波拉契数列矩阵连乘(模板)
来源:互联网 发布:linq 更新数据 编辑:程序博客网 时间:2024/05/18 10:43
题意:求第N项取模1e9+7。
思路:
# include <bits/stdc++.h>using namespace std;typedef long long LL;const LL mod = 1e9+7;struct Mat{LL mat[2][2];};Mat operator *(Mat a, Mat b)//矩阵相乘。{ Mat c; for(int i=0; i<2; ++i) for(int j=0; j<2; ++j) { c.mat[i][j] = 0; for(int k=0; k<2; ++k) c.mat[i][j] = (c.mat[i][j] + a.mat[i][k]*b.mat[k][j]%mod)%mod; } return c;}Mat operator ^(Mat a, LL k){ Mat c; for(int i=0; i<2; ++i)//普通快速幂初始化为1,这里初始化为单位矩阵。 for(int j=0; j<2; ++j) c.mat[i][j] = (i==j); for(;k;k>>=1)//快速幂。 { if(k&1) c = c*a; a = a*a; } return c;}int main(){ int n; while(~scanf("%d",&n)) { Mat c; c.mat[0][0] = c.mat[0][1] = c.mat[1][0] = 1; c.mat[1][1] = 0; c = c^n; printf("%lld\n",c.mat[1][0]); } return 0;}
阅读全文
0 0
- 斐波拉契数列矩阵连乘(模板)
- 矩阵连乘算法模板
- hdu3117(斐波那契数列,矩阵连乘)
- BZOJ-3231 递归数列 矩阵连乘+快速幂
- 一个矩阵的类与矩阵连乘模板
- POJ3070 Fibonacci (矩阵连乘)
- 矩阵连乘 动态规划(转载)
- 矩阵连乘(动规递推解决)
- 矩阵连乘问题(C++)
- 矩阵连乘问题(动态规划)
- Not Fibonacci(矩阵连乘)
- POJ 1651(矩阵连乘)
- 矩阵连乘问题(dp)
- 动态规划(矩阵连乘)
- 矩阵连乘(动态规划)
- 矩阵连乘
- Strassen矩阵连乘
- 矩阵连乘问题
- 暑假小集训
- linux启动分析——init进程与app启动
- 04. 斜堆(Skew Heap)
- 《剑指offer》求二叉树的最小深度(非递归法)
- Windows路由表配置:双网卡同时上公司内外网
- 斐波拉契数列矩阵连乘(模板)
- ViewGroup的TouchEvent的处理机制
- org.apache.commons.lang.builder.ReflectionToStringBuilder类,用于将对象转换成字符串
- implement strStr()
- 我要通过
- windows环境下ElasticSearch5以上版本安装head插件
- 01. 选择、插入、冒泡排序
- nginx启动与配置
- 2017年-年中总结