斐波那契额数列 矩阵快速
来源:互联网 发布:python re group 编辑:程序博客网 时间:2024/06/10 22:19
#include <iostream>using namespace std;typedef long long ll;const int MOD = 1e9 + 7;#define mod(a) (ll(a)%MOD)struct MATRIX{ll a[2][2];};MATRIX a;ll f[2];void ANS_Cf(MATRIX a) {f[0] = mod(a.a[0][0] + a.a[1][0]);f[1] = mod(a.a[0][1] + a.a[1][1]);return ;}MATRIX MATRIX_Cf(MATRIX a, MATRIX b) {MATRIX ans;int k;for(int i = 0; i < 2; i++) {for(int j = 0; j < 2; j++) {ans.a[i][j] = 0;k = 0;while(k < 2) {ans.a[i][j] += a.a[k][i]*b.a[j][k];ans.a[i][j] = mod(ans.a[i][j]);++k;}}}return ans;}MATRIX MATRIX_Pow(MATRIX a , ll n) {MATRIX ans;ans.a[0][0] = 1;ans.a[1][1] = 1;ans.a[0][1] = 0;ans.a[1][0] = 0;while(n) {if(n & 1) {ans = MATRIX_Cf(ans , a);}n >>= 1;a = MATRIX_Cf(a , a);}return ans;}int main() {ll n;while(cin >> n) {if(n == 1) {cout<<'1'<<endl;continue;}a.a[0][0] = a.a[0][1] = a.a[1][0] = 1;a.a[1][1] = 0;a = MATRIX_Pow(a , n - 2);ANS_Cf(a);cout<<f[0]<<endl;}return 0;}
阅读全文
0 0
- 斐波那契额数列 矩阵快速
- 斐波那契额数列
- 斐波那契额数列
- 斐波那契额数列
- LISP DO循环斐波那契额数列
- 斐波那契额数列Java实现方法
- ny 13 斐波那契额数列
- 模板 大数的斐波那契额数列(可以用来求大数加法)
- 【数据结构与算法】斐波那契额数列用for循环实现
- 来简单地数个数(斐波那契额数列)
- 矩阵链乘+斐波那契+快速幂 专题
- ccsu 1042 斐波那契II 矩阵快速幂
- hdu3117(斐波那契数列+矩阵快速幂)
- 斐波那契的矩阵快速幂
- 矩阵快速幂 斐波那契数列
- EOJ 1499 【斐波那契数列】【矩阵快速幂】
- hdu4549 M斐波那契数列(矩阵快速幂)
- hihoCoder1143 DP 斐波那契数列矩阵快速幂
- 统计学习方法——模型的选择与评估(过拟合、泛化能力)
- 2017沈阳站现场赛打表程序 F Heron and his Triange
- 字节和字符
- 01-linux命令
- 学习心得
- 斐波那契额数列 矩阵快速
- Linux网络编程——tcp并发服务器(多进程)
- java中各种集合的用法和比较
- Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
- 有没有大神能够逐行解释一下代码?Delphi
- Servlet——HttpServletRequest对象详解
- 小朋友学C语言(31):递归解决汉诺塔
- Tomcat与Servlet的笔记
- Selenium和Firefox对应版本