斐波那契数列的性质
2015-08-16 18:51
260 查看
斐波那契递推式:
Matrix
[b]
[/b]
#include<iostream> #include<stdio.h> #include<string.h> #include<string> #include<algorithm> #define LL long long #define N 2 #define MOD 100000007 using namespace std; struct Matrix { LL m ; }; Matrix A = { 1,1, 1,0 }; Matrix I = { 1,0, 0,1 }; Matrix multi(Matrix a,Matrix b) { Matrix c; int i,j,k; for(i=0;i<N;i++) { for(j=0;j<N;j++) { c.m[i][j] = 0; for(k=0;k<N;k++) { c.m[i][j] += a.m[i][k] * b.m[k][j] % MOD; } c.m[i][j] %= MOD; } } return c; } Matrix mat_pow(Matrix A,int k) { Matrix ans = I,p = A; //为了 不更改I 和 A while(k) { if(k&1) { ans = multi(ans,p); } k >>= 1; p = multi(p,p); } return ans; } int main() { int n; while(scanf("%d",&n)!=EOF) { Matrix ans = mat_pow(A,n-1); printf("%I64d\n",ans.m[0][0]); } return 0; }
Matrix
[b]
[/b]
相关文章推荐
- root密码忘记了要怎么搞
- Android(java)学习笔记166:Java中输入和输出流概念
- 十年只是刹那间
- How to make money as an independent developer
- Linux下MySQL的配置
- GoAgent下local文件下proxy.ini文件各项参数介绍
- 为Notepad++配备VS的Visual C++ 编译器
- 为notepad++添加g++编译器编译objc/c/c++/C#
- 【WP开发问题1】 请确保已为开发人员解锁此设备。有关开发人员解锁的详细信息,
- VS2013+openCV3.0无脑配置方法+解决警告问题【windows平台】
- 如何直接从 Google Play 下载 APK 文件?
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player
- 【转载】中文ubuntu里用户目录里的路径改成英文
- 【原】更改ubuntu15.04的开机启动等待时间和启动项
- oracle备份和升级数据库
- Android API的View类
- springMVC 笔记
- sql server
- 【数据结构】线性表顺序结构的操作---C/C++语言
- 【数据结构】双向循环线性表的基本操作--C++/C实现